题目大意:
有N个人,每个人买了一个礼物,现在礼物混在一起。
问恰好有M个人拿到自己礼物的概率
解题思路:
排列组合问题
代码如下:
#include <stdio.h>
int m, n;
double a[101];
int main()
{
a[1] = 0, a[2] = 1;
int i;
for(i = 3; i < 101; i ++)
{
a[i]=(i-1)*(a[i-1]+a[i-2]);
}
while(scanf("%d %d", &n, &m) != EOF)
{
double pb = 1;
if(n == m)
{
for(i = 1; i <= n; i ++)
{
pb /= double(i);
}
}
else
{
pb *= a[n - m];
for(i = 1; i <= m; i ++)
{
pb /= double(i);
}
for(i = 1; i <= n - m; i ++)
{
pb /= double(i);
}
}
printf("%0.8lf\n", pb);
}
return 0;
}