B1104 Sum of Number Segments (找规

2020-03-20  本文已影响0人  Tsukinousag

1104 Sum of Number Segments (20分)

题目看错,看对了也不找不出来规律,自己找的规律只能把不重复序列算出来,但是重复序列就g了,只过了测试1,好无语%%啊水题搞这么久

果然数学看多了,就喜欢找通项公式/(ㄒoㄒ)/~~

#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);
    }
}
#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);

}

上一篇 下一篇

猜你喜欢

热点阅读