PS:WA了两次...主要是没注意到fac的大小好像只能写到9...要用long long型递归求阶乘...
然后就是错排公式...百度下..
代码:
#include "stdio.h"
long long dp[30];
long long fac[30];
int main(){
int n,a,i;
dp[0]=0;
dp[1]=1;
fac[0]=1;
fac[1]=1;
fac[2]=2;
//dp[1]=0;
//dp[2]=1;
for(i=2;i<30;i++){
dp[i]=i*(dp[i-1]+dp[i-2]);
fac[i+1]=fac[i]*(i+1);
}
scanf("%d",&n);
while(n--){
scanf("%d",&a);
printf("%.2lf%%\n",(double)dp[a-1]/fac[a]*100.0);
}
return 0;
}
时间: 2024-10-02 11:48:38