495. Kids and Prizes
Time limit per test: 0.25 second(s)
Memory limit: 262144 kilobytes
Memory limit: 262144 kilobytes
input: standard
output: standard
output: standard
ICPC (International Cardboard Producing Company) is in the business of producing cardboard boxes. Recently the company organized a contest for kids for the best design of a cardboard box and selected M winners. There are N prizes for the winners, each one carefully packed in a cardboard box (made by the ICPC, of course). The awarding process will be as follows:
- All the boxes with prizes will be stored in a separate room.
- The winners will enter the room, one at a time.
- Each winner selects one of the boxes.
- The selected box is opened by a representative of the organizing committee.
- If the box contains a prize, the winner takes it.
- If the box is empty (because the same box has already been selected by one or more previous winners), the winner will instead get a certificate printed on a sheet of excellent cardboard (made by ICPC, of course).
- Whether there is a prize or not, the box is re-sealed and returned to the room.
Input
The first and only line of the input file contains the values of
N
and
M
(
).
Output
The first and only line of the output file should contain a single real number: the expected number of prizes given out. The answer is accepted as correct if either the absolute or the relative error is less than or equal to 10
-9
.
Example(s)
sample input | sample output |
5 7 | 3.951424 |
sample input | sample output |
4 3 | 2.3125 |
题意为:
n件奖品放在n个盒子里面,有m个孩子依次去挑选一个盒子,如果有奖品把奖品拿走,盒子留下,如果没有奖品,很遗憾,问当m个孩子挑选完,能获得的奖品数的期望。
逆向思维:
对于每个盒子来说,每一次不被选择的概率为(n-1)/n; (选别的,就不选它)
那么m次,对每个盒子来说,不被选择的概率为 [(n-1)/n] ^ m
那么m次,不被选择的盒子的期望为 n *[(n-1)/n] ^ m (二项分布)
那么m次,被选择的盒子的期望为 n-(n *[(n-1)/n] ^ m)
可以理解为 ,一共做了n次随机实验,每一次发生(当前盒子m次都没有被选)的概率为 P=[(n-1)/n] ^ m , 那么没被选择的盒子的期望为 nP( 二项分布)
代码:
#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
int main()
{
double n,m;
while(cin>>n>>m)
{
cout<<setiosflags(ios::fixed)<<setprecision(10)<<n-n*pow((n-1)/n,m)<<endl;
}
return 0;
}