Atcoder Educational DP Contest I - Coins

View as PDF

Submit solution


Points: 0.30 (partial)
Time limit: 2.0s
Memory limit: 1G
Input: stdin
Output: stdout

Suggester:
Problem source:
Atcoder Educational DP Contest
Problem type
Allowed languages
C, C++, Java, Kotlin, Pascal, PyPy, Python, Scratch

Cho ~N~ là một số nguyên dương lẻ.

Có tất cả ~N~ đồng xu được đánh số ~1,2,...,N~. Xác suất để đồng xu thứ ~i~ ~(1 \leq i \leq N)~ lật mặt ngửa khi được tung lên là ~p_{i}~ và xác suất để nó lật mặt sấp khi được tung lên là ~1-p_{i}~.

Taro sẽ tung hết tất cả ~N~ đồng xu. Tìm xác suất để có số mặt ngửa nhiều hơn số mặt sấp.

Input

Dòng đầu tiên chứa số nguyên dương lẻ ~N~ ~(1 \leq N \leq 2999)~

Dòng tiếp theo chứa ~N~ số thực ~p_{i}~ ~(0 < p_{i} < 1)~, mỗi số có hai chữ số thập phân.

Output

In ra xác suất để có số mặt ngửa nhiều hơn số mặt sấp. Kết quả in ra được coi là chính xác nếu sai số tuyệt đối với đáp án không vượt quá ~10^{-9}~.

Sample 1

Input
3
0.30 0.60 0.80
Output
0.612
Giải thích

Xác suất để có số mặt ngửa nhiều hơn số mặt sấp bao gồm các trường hợp:

  • Xác suất để có (Ngửa, Ngửa, Ngửa) là ~0.3×0.6×0.8=0.144~;
  • Xác suất để có (Sấp, Ngửa, Ngửa) là ~0.7×0.6×0.8=0.336~;
  • Xác suất để có (Ngửa, Sấp, Ngửa) là ~0.3×0.4×0.8=0.096~;
  • Xác suất để có (Ngửa, Ngửa, Sấp) là ~0.3×0.6×0.2=0.036~.

Do đó, xác suất để có số mặt ngửa nhiều hơn số mặt sấp là ~0.144+0.336+0.096+0.036=0.612~.

Sample 2

Input
1
0.50
Output
0.5
Giải thích:

Kết quả in ra ví dụ như 0.500, 0.500000001 and 0.499999999 đều được coi là chình xác.

Sample 3

Input
5
0.42 0.01 0.42 0.99 0.42
Output
0.3821815872

Comments

Please read the guidelines before commenting.


There are no comments at the moment.