题目:https://pintia.cn/problem-sets/994805260223102976/problems/994805275792359424
经验总结:
看完题目,直觉(或者是经验)告诉我,这是一个找规律的题目。毕竟对于输入数据过多的话,用for嵌套for的去算的话,超时的可能性还是比较大的。所以选择找下规律,然后刚开始一直不知道后两个测试点为什么错误,经搜索相关问题后了解到是后两个测试点的精度问题,解决方法为:要么运算的时候前面int型强制转换下double,要么把double类型的变量放在最前面。或者全部变量都用double,避免精度问题。
记:注意运算过程中的精度问题,实在不行,全用同一类型。。。简单粗暴
C++代码:
#include <iostream>
#include <cstdio>
using namespace std;
int main(){
int n;
scanf("%d",&n);
double num,ans = 0;
for(int i=0;i<n;i++){
getchar();
scanf("%lf",&num);
ans += num*(i+1)*(n-i); //这里要把double型的变量放在最前面,否则最后两个测试点会错误
//ans += (double)(i+1)*(n-i)*num; //或者加double强制转换类型,就能AC
}
printf("%.2lf",ans);
return 0;
}