1.题目描述
今年公司年会的奖品特别给力,但获奖的规矩却很奇葩:
- 首先,所有人员都将一张写有自己名字的字条放入抽奖箱中;
- 待所有字条加入完毕,每人从箱中取一个字条;
- 如果抽到的字条上写的就是自己的名字,那么“恭喜你,中奖了!”
现在告诉你参加晚会的人数,请你计算有多少概率会出现无人获奖?
2.输入描述:
输入包含多组数据,每组数据包含一个正整数n(2≤n≤20)。
3.输出描述:
对应每一组数据,以“xx.xx%”的格式输出发生无人获奖的概率。
4.输入例子:
2
5.输出例子:
50.00%
6.解题思路:
还是错排问题,参考《发邮件》一题;
因为该题要求出错排概率,所以不仅要求出共有多少种错排情况,还有求共有多少种排序情况,错排种数/总排序种数=错排概率
错排公式就不多说了,总排序种数也就是求阶层
最后按题目格式输出即可
7.源代码:
#include<stdio.h>
int main()
{
int i,n;
long long p1[20]={0,0,1},p2[20]={0,1,2};//__in64
for(i=3;i<21;i++)
{
p1[i]=(i-1)*(p1[i-1]+p1[i-2]);
p2[i]=i*p2[i-1];
}
while(scanf("%d",&n)!=-1)
{
printf("%.2f%c\n",1.0*p1[n]/p2[n]*100,'%');
}
return 0;
}