美文网首页
B1104 Sum of Number Segments (找规

B1104 Sum of Number Segments (找规

作者: Tsukinousag | 来源:发表于2020-03-20 09:45 被阅读0次

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

}

相关文章

网友评论

      本文标题:B1104 Sum of Number Segments (找规

      本文链接:https://www.haomeiwen.com/subject/numdyhtx.html