#include<stdio.h>
int main(){
int T,n;
double ans[8]={0,0,50,33.33,37.50,36.67,36.81,36.79};
scanf("%d",&T);
while(T--) {
scanf("%d",&n);
if(n>=7)
printf("36.79%%\n");
else
printf("%.2lf%%\n",ans[n]);
}
return 0;
}
这是作弊的代码,可根据规律计算得出。也可以AC。
#include <stdio.h>
float fac(int a){
if(a==0)return 1;
else return a*fac(a-1);
}
int main(){
int t,i,num;
float p[50]={0,0,1};
scanf("%d",&t);
i=3;
while(t--)
{
scanf("%d",&num);
for(;i<=num;i++)
p[i]=(i-1)*(p[i-1]+p[i-2]);
printf("%.2f%%\n",p[num]*100/fac(num));
}
return 0;
}
正确的AC代码,典型的错排问题。请参照 这里点击打开链接