题目
https://pintia.cn/problem-sets/994805342720868352/problems/994805363914686464
题意和分析
详见参考文章
注意
参考文章中的疑问可以用long double来解决,其它的思路都没问题
sum+=tmp*i*(n-i+1);
这行代码不能写为下面这种形式:
sum+=i*(n-i+1)*tmp;
因为如果n比较大时,前两个整形相乘会直接溢出导致答案错误,所以要先将其中一个和tmp相乘转化为long double类型就不会溢出了
AC代码
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
long double sum=0,tmp;
for(int i=1;i<=n;i++)
{
cin>>tmp;
sum+=tmp*i*(n-i+1);
}
printf("%.2llf",sum);
}