题目:1049 数列的片段和 - PAT (Basic Level) Practice (中文) (pintia.cn)
找规律:
1出现的个数=1前面的数的个数(算上1自身)× 1后面的数的个数(也算上1自身)
1 × 4 = 4
2出现的个数=2前面的数的个数(算上2自身)× 2后面的数的个数(也算上2自身)
2 × 3 = 6
3,4同理。
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n=0;cin>>n;
double x,sum=0;
for(int i=1;i<=n;i++)
{
scanf("%lf",&x);
sum+=x*i*(n-i+1);
}
printf("%.2lf",sum);
return 0;
}
原因是n最大为1e5,double越大精度差越大,所以我们这里可以用long double;
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
long double x,sum=0; //sum要么定为全局变量要么初始化
cin>>n;
for(int i=1;i<=n;i++)
{
scanf("%llf",&x);
sum+=x*i*(n-i+1);
}
printf("%.2llf",sum);
return 0;
}