问题描述
问题分析
错排问题
也就是
a[i]=(i-1)*(a[i-1]+a[i-2])
这里涉及到阶乘
也不想换数据类型了
所以由规律知加了一个判断
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
| #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%%\n",a[n]*100.0/j(n));
else
printf("36.79%%\n");
}
return 0;
}
|
题目地址:【杭电】[2048]神、上帝以及老天爷