时间限制 1000 ms 内存限制 32768 KB 代码长度限制 100 KB 判断程序 Standard (来自 小小)
题目描述
今年公司年会的奖品特别给力,但获奖的规矩却很奇葩:

  1. 首先,所有人员都将一张写有自己名字的字条放入抽奖箱中;
  2. 待所有字条加入完毕,每人从箱中取一个字条;
  3. 如果抽到的字条上写的就是自己的名字,那么“恭喜你,中奖了!”
    现在告诉你参加晚会的人数,请你计算有多少概率会出现无人获奖?

输入描述:
输入包含多组数据,每组数据包含一个正整数n(2≤n≤20)。

输出描述:
对应每一组数据,以“xx.xx%”的格式输出发生无人获奖的概率。

输入例子:
2

输出例子:
50.00%

#include<stdio.h>
int main()
{    long  der[21] = { 0,0,1 }, fun[21] = { 0,1,2 }; 
 int i, n;    for (i = 3; i < 21; i++)  
 {        der[i] = (i - 1) * (der[i - 2] + der[i - 1]);        fun[i] = i*fun[i - 1];    }    while (~scanf("%d", &n))    {        printf("%.2f%c\n", 1.0*der[n] /fun[n] * 100, '%');    }    return 0;}

这是斐波那契数列的变体