使用如下的代码段测试点 2 3 会出现答案错误:
#include<stdio.h>
int main(){
int n;
scanf("%d",&n);
double a[n];
double num[n] = {0};
for(int i = 0;i < n;i++){
scanf("%lf",&a[i]);
}
double ans = 0;
/*for(int i = 0;i < n;i++){
ans += a[i] * (n - i) * (i + 1);
}*/
for(int i = 0;i < n;i++){
num[i] = (n - i) * (i + 1);
}
for(int i = 0;i < n;i++){
ans += a[i] * num[i];
}
printf("%.2f\n",ans);
return 0;
}
修改如下:
#include<stdio.h>
int main(){
int n;
scanf("%d",&n);
double a[n];
double num[n] = {0};
for(int i = 0;i < n;i++){
scanf("%lf",&a[i]);
}
double ans = 0;
for(int i = 0;i < n;i++){
num[i] = (n - i) * (i + 1);
}
for(int i = 0;i < n;i++){
ans += a[i] * num[i];
}
printf("%.2f\n",ans);
return 0;
}
原因暂时还不清楚,希望懂的人可以解答...