分析:
和这题类似
在
x
x
x后面增多一个
1
1
1 就会多产生
(
x
+
1
)
3
−
x
3
=
3
x
2
+
3
x
+
1
(x+1)^3-x^3=3x^2+3x+1
(x+1)3−x3=3x2+3x+1的贡献
然后处理平方同理
(
x
+
1
)
2
−
x
2
=
2
x
+
1
(x+1)^2-x^2=2x+1
(x+1)2−x2=2x+1
最后就是
f
i
=
f
i
−
1
f_i=f_{i-1}
fi=fi−1加上产生的贡献
CODE:
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
const int N=1e5+5;
int n;
double p[N],f[N],x[N],x2[N];
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%lf",&p[i]);
for(int i=1;i<=n;i++)
{
x[i]=(x[i-1]+1)*p[i];
x2[i]=(x2[i-1]+2*x[i-1]+1)*p[i]; //x^2
f[i]=f[i-1]+(3*x2[i-1]+3*x[i-1]+1)*p[i];
}
printf("%.1lf",f[n]);
return 0;
}