测试点2答案错误: 是由于精度丢失造成的,使用long double型变量可解决
同时(n + 1 - i) * i 也可能存在 (4 * 10 ^ 5) * (4 * 10 ^ 5)的情况,即int型相乘溢出。
参考博客1 参考博客2
#include<iostream>
using namespace std;
int main() {
int n;
long double num, sum = 0; // --------- 定义为long double
cin >> n;
for(int i=1; i<=n; i++) {
cin >> num;
sum += num * (n + 1 - i) * i;
}
printf("%.2Lf", sum); // ---- 格式说明符为 Lf% , 第一个字母一定要大写L, 第二个字母大小写皆可
return 0;
}
long double的输入输出需要使用格式符Lf%,第一个字母必须使用大写L,第二个字符大小写皆可。