错排问题
也就是
a[i]=(i-1)*(a[i-1]+a[i-2])
这里涉及到阶乘
也不想换数据类型了
所以由规律知加了一个判断
#include<stdio.h>
int j(int m) {
if(m==1)
return 1;
else
return m*j(m-1);
}
int main() {
int a[15]= {0,0,1};
for(int i=3; i<13; i++) {
a[i]=(i-1)*(a[i-1]+a[i-2]);
}
int T;
scanf("%d",&T);
while(T--) {
int n;
scanf("%d",&n);
if(n<13)
printf("%.2lf%%
",a[n]*100.0/j(n));
else
printf("36.79%%
");
}
return 0;
}
题目地址:【杭电】[2048]神、上帝以及老天爷