一起玩音游
题号:NC232849
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
Special Judge, 64bit IO Format: %lld

题目描述

简化过的音游中,每次游戏有n次点击,每次点击有好和不好两种可能的结果,其中好表示为"O",不好表示为"X",则每次游戏可以表示为一个长度为n的字符串。游戏的得分可以用该字符串进行计算:对于每个最长的连续"O"串,其对分数的贡献为自身长度的平方。例如"OXXOOXOOO",其中有三个最长的连续"O"串:"O"、"OO"、"OOO",则分数为。若字符串中没有"O",则分数为0。

现在给出每次点击是好的概率,其中第i次为好的概率为p_i。求游戏分数的期望值。

输入描述:

第一行输入一个整数n (),表示点击数。
第二行输入n个实数 (),每个实数至多有6位小数。

输出描述:

输出一行一个实数,表示分数的期望值,与答案的绝对或相对误差不超过即为正确。
示例1

输入

复制
3
0.5 0.5 0.5

输出

复制
2.750000000000000

说明

对于第一个样例,有8种可能:
"OOO"=9
"OOX"=4
"OXO"=2
"OXX"=1
"XOO"=4
"XOX"=1
"XXO"=1
"XXX"=0
故期望值为(9+4+2+1+4+1+1+0)/8 = 2.75
示例2

输入

复制
4
0.7 0.2 0.1 0.9

输出

复制
2.489200000000000
示例3

输入

复制
5
1 1 1 1 1

输出

复制
25.000000000000000