杭电acm2048
最后数据会超过 2 ^32 - 1。
输出%用%%。
#include <stdio.h> #include <math.h> int main() { int n, i, k; __int64 a[21][2]={{1, 0}, {1, 0}, {2, 1}}; for(i=3; i<21; i++) { a[i][0] = i * a[i-1][0]; a[i][1] = (i-1) * (a[i-1][1] + a[i-2][1]); } /*for(i=0; i<21; i++) { printf("%d %d ", a[i][0], a[i][1]); }*/ while(scanf("%d", &n) != EOF) { while(n--) { scanf("%d", &k); printf("%.2f%%\n", a[k][1] * 100.0 / a[k][0]); } } return 0; }