1 2
50.00%
递推过程:用A-1,B-2来代表是否抽到自己的名字,
例: A B C D E 1 2 3 4 5
此时n=5,考虑E,E没有拿到自己的名字,种数为n-1,
此时(例举一种情况): A B C D 1 2 3 5 E #include<stdio.h>
int main()
{
double a[30]={0,0,1},b[30]={0,1,2};
int i,m,n;
double t;
for(i=3;i<30;i++)
{
a[i]=(i-1)*(a[i-1]+a[i-2]);
b[i]=i*b[i-1];
}
scanf("%d",&m);
for(i=0;i<m;i++)
{
scanf("%d",&n);
t=(a[n]/b[n])*100;
printf("%.2lf%%\n",t);
}
}
4
#include<stdio.h>
int main()
{
double a[30]={0,0,1},b[30]={0,1,2};
int i,m,n;
double t;
for(i=3;i<30;i++)
{
a[i]=(i-1)*(a[i-1]+a[i-2]);
b[i]=i*b[i-1];
}
scanf("%d",&m);
for(i=0;i<m;i++)
{
scanf("%d",&n);
t=(a[n]/b[n])*100;
printf("%.2lf%%\n",t);
}
}