根据精度较小, O(n2) 随便加的剪枝就过了
#include<bits/stdc++.h>
#define Fu(i,a,b) for(int i=a;i<=b;i++)
#define Fd(i,a,b) for(int i=a;i>=b;i--)
#define fre(x) freopen(#x".in","r",stdin),freopen(#x".out","w",stdout)
using namespace std;
int n;
double p[100005],pp[100005],ans;
int main(){
scanf("%d",&n);
pp[0]=1;
Fu(i,1,n) scanf("%lf",&p[i]);
Fu(i,1,n){
double x=1;
Fu(j,i,n){
x*=p[j];
if(x<1e-10) break;
ans+=x*(1-p[i-1])*(1-p[j+1])*(j-i+1)*(j-i+1)*(j-i+1);
}
}
printf("%.1lf",ans);
return 0;
}