关于算法-数据结构:PAT甲级1104-Sum-of-Number-Segments

2次阅读

共计 421 个字符,预计需要花费 2 分钟才能阅读完成。

题目粗心:

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

算法思路:

其实就是找法则,也不晓得为啥第一次写的时候齐全找不进去,看答案都看不懂,第二次就一下看进去了, 画个图看看就明确了

留神点:

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

提交后果:

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;
}
正文完
 0