今年公司年会的奖品特别给力,但获奖的规矩却很奇葩:
1. 首先,所有人员都将一张写有自己名字的字条放入抽奖箱中;
2. 待所有字条加入完毕,每人从箱中取一个字条;
3. 如果抽到的字条上写的就是自己的名字,那么“恭喜你,中奖了!”
现在告诉你参加晚会的人数,请你计算有多少概率会出现无人获奖?
输入包含多组数据,每组数据包含一个正整数n(2≤n≤20)。
对应每一组数据,以“xx.xx%”的格式输出发生无人获奖的概率。
输入示例
2
输出示例
50.00%
#include<stdio.h>
typedef long long ll;
int main(){
ll arr[21]={0,0,1,2};
int i;
int num;
for(i=4;i<=20;i++){
arr[i]=(i-1)*(arr[i-1]+arr[i-2]);
}
while(~scanf("%d",&num)){
ll sum=1;
for(i=num;i>0;i--){//排列总数阶乘计算
sum = sum*i;
}
printf("%0.2f%%\n",((arr[num]*1.0)/sum)*100);
}
return 0;
}