sum += n * (N - i) * (i + 1); // 一定要注意 n 写在前面
不然提交就是错的,不知道为什么。
#include<iostream>
using namespace std;
int main(){
int N;
double n, sum = 0;
cin >> N;
for(int i = 0; i < N; i++){
cin >> n;
sum += n * (N - i) * (i + 1); // 一定要注意 n 写在前面
}
printf("%.2f", sum);
return 0;
}
找到了柳诺大神的解答
和+=没有关系,问题出在i*(n - i + 1),这样会导致溢出,因为i和n-i+1都是int类型,相乘结果超出了int最大值,而我的代码写的是temp * i,由于temp是double类型,那么temp和i相乘结果也是double类型,不会导致相乘溢出