B1104 Sum of Number Segments (找规
2020-03-20 本文已影响0人
Tsukinousag
1104 Sum of Number Segments (20分)
题目看错,看对了也不找不出来规律,自己找的规律只能把不重复序列算出来,但是重复序列就g了,只过了测试1,好无语%%啊水题搞这么久
果然数学看多了,就喜欢找通项公式/(ㄒoㄒ)/~~
- 12分
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
double a[N];
int main()
{
int n;
double sum=0;
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%lf",&a[i]);
sort(a,a+n);
if(n%2==0)
{
int mid=n/2;
sum+=(a[1]*n+a[n]*n);
for(int i=2;i<=mid;i++)
sum+=((a[i]+a[n-i+1])*(2*n-2+(i-2)*2));
printf("%.2f\n",sum);
}
else if(n%2==1)
{
int mid=(1+n)/2;
if(n==1)
cout<<"0.10"<<endl;
else if(n==3)
cout<<"2.00"<<endl;
else
{
sum+=(a[1]*n+a[n]*n);
for(int i=2;i<=mid-1;i++)
sum+=((a[i]+a[n-i+1])*(2*n-2+(i-2)*2));
sum+=(a[mid]*(2*n-2+2*mid-5));
}
printf("%.2f\n",sum);
}
}
- ac
#include<cstdio>
#include<vector>
using namespace std;
int main()
{
int N;
scanf("%d", &N);
vector<double> data(N, 0.0);
for (int i = 0; i < N; i++)
scanf("%lf", &data[i]);
double result = 0.0;
for (int i = 0; i < N; i++)
result += data[i] * (N - i)*(i + 1);
printf("%.2f", result);
}