给定一组 𝑁 数字 𝑎1, 𝑎2, . . ., 𝑎𝑁 . 需要输出 𝑁 个数 𝑡𝑘 (𝑘 = 1, . . ., 𝑁),其中𝑡𝑘 是步长为𝑘的数组元素之和:即 𝑡1 等于所有数组元素的和,𝑡2 等于数组中每个第二个元素的和,𝑡3 等于每个第三个元素的和,以此类推。第一行包含一个整数 𝑁 (1 <= 𝑁 <= 10^5)。第二行包含 𝑁 空格分隔的整数 𝑎𝑖 (1 <= 𝑎𝑖 <= 10^4)。 打印 𝑁 行:在第 𝑘 行打印值 𝑡𝑘。 我的代码原则上几乎是正确的,但我无法弄清楚为什么它错误地计算了 t1 和 tk 之间的值:
#include<stdio.h>
int main(){
int N, k, t, sigma;
scanf("%d", &N);
int a[10000];
for (int i=0; i<N; i++){
scanf("%d", &a[i]);
}
for(int i=0; i<N; i++){
for(k=0; k<N; k++){
sigma+=a[i+k];
}
printf("%d\n", sigma);
sigma=0;
}
}
请告诉我要解决的问题:)(示例:N=6 输入 4 3 5 1 2 9,输出应为 24 13 14 1 2 9(在一列中))
正确的解决方案是这样的:
一些你无法应付的任务。我的好成绩在哪里?:)
我们只需读取并立即将总和累加到一个数组
t中。它不需要初始化——它是全局的。