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; }