HDUOJ - 2048 神、上帝以及老天爷

这个题,要用到错排递推公式,还有全排。
还有,最近比赛啥的老是不爽,结果通过这个题竟然发现了自己的毛病,printf(“%lf”)输出double型怎么弄也是输出0.00,调试了半天,还以为C语言编译器犯病了。后来才知道输出时应该用f,无语了。发现自己太水了。。。好好努力吧。。


#include <iostream>
#include <cstdio>
using namespace std;

long long int cuo[21];
long long int all[21];

void init()
{
    all[1] = 1;
    for(int i = 2; i < 21; i++)
        all[i] = all[i-1] * i;
    cuo[1] = 0; cuo[2] = 1;
    for(int i = 3; i < 21; i++)
        cuo[i] = (i-1)*(cuo[i-1]+cuo[i-2]);
}


int main()
{
    init();
    int T;
    cin >>T;
    while(T--){
        int x; cin >> x;
        double res = 100.0 * cuo[x] / all[x];
        printf("%.2f%%\n", res);
    }
    return 0;
}


posted @ 2014-12-20 22:37  Popco  阅读(281)  评论(0编辑  收藏  举报