Birthday Paradox
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
Special Judge, 64bit IO Format: %lld

题目描述


The probability of n unique birthdays among n people.

The Birthday Paradox is the name given to the surprising fact that if there are just 23 people in a group, there is a greater than chance that a pair of them share the same birthday. The underlying assumptions for this are that all birthdays are equally likely (which isn't quite true), the year has exactly 365 days (which also isn't true), and the people in the group are uniformly randomly selected (which is a somewhat strange premise). For this problem, we'll accept these assumptions.

Consider what we might observe if we randomly select groups of P=10 people. Once we have chosen a group, we break them up into subgroups based on shared birthdays. Among many other possibilities, we might observe the following distributions of shared birthdays:
  • all 10 have different birthdays, or
  • all 10 have the same birthday, or
  • 3 people have the same birthday, 2 other people have the same birthday (on a different day), and the remaining 5 all have different birthdays.
Of course, these distributions have different probabilities of occurring.

Your job is to calculate this probability for a given distribution of people sharing birthdays. That is, if there are P people in a group, how probable is the given distribution of shared birthdays (among all possible distributions for P people chosen uniformly at random)?

输入描述:

The first line gives a number n where . The second line contain integers c_1 through c_n, where  for all c_i. The value c_i represents the number of people who share a certain birthday (and whose birthday is distinct from the birthdays of everyone else in the group).

输出描述:

Compute the probability b of observing a group of people with the given distribution of shared birthdays. Since b may be quite small, output instead . Your submission's answer is considered correct if it has an absolute or relative error of at most  from the judge's answer.
示例1

输入

复制
2
1 1

输出

复制
-0.001191480807419
示例2

输入

复制
7
1 1 2 1 3 1 1

输出

复制
-4.310614508857128

备注:

The first sample case shows P=2 people with distinct birthdays. The
probability of this occurring is ,
and .

The second sample case represents the third example in the list given earlier
with P=10 people. In this case, the probability is ,
and .