1

题目大意:

给定一个序列,求出所有片段的和

算法思路:

其实就是找规律,也不知道为啥第一次写的时候完全找不出来,看答案都看不懂,第二次就一下看出来了,画个图看看就明白了
截屏2020-10-23 下午1.26.43.png

注意点:

1、使用双层循环测试点2和3会超时。
2、测试点2数据太大,使用double会出错,得换成long double,2020年5月前不会出错,应该是新添加的数据点

提交结果:

截屏2020-10-23 下午1.28.32.png

AC代码:

#include <cstdio>

using namespace std;

int main(){
    int N;
    scanf("%d",&N);
    long double a[N];
    for (int i = 0; i < N; ++i) {
        scanf("%Lf",&a[i]);
    }
    long double ans = 0;
    for (int i = 0; i < N; ++i) {
        //迭代N次
        ans += a[i]*(N-i)*(i+1);//a[i]在第i+1轮迭代中出现了(N-i)次,总的迭代轮次为i+1
    }
    printf("%.2Lf",ans);
    return 0;
}

乔梓鑫
569 声望17 粉丝

主要分享个人学习经验和心得