A
The stupid owls时间限制:1000ms 内存限制:65536kb
通过率:159/172 (92.44%)
正确率:159/449 (35.41%)
解析:
本质是错排问题。本题求错排概率,即错排数/全排列数,控制精度输出即可。
错排公式:f(1) = 0, f(2) = 1,f(n) = (n-1)[f(n-2)+f(n-1)] (n>2)。
错排解析:算法——错排问题
代码:
#include<cstdio>
long long dis_arg(int);
long long total_arg(int);
int main()
{
int n;
while(~scanf("%d",&n))
{
double ans = 100 * (double)dis_arg(n)/(double)total_arg(n);
printf("%.2lf",ans);
puts("%");
}
}
long long dis_arg(int n)
{
if(n == 1)
return 0;
if(n == 2)
return 1;
return (n-1)*(dis_arg(n-1)+dis_arg(n-2));
}
long long total_arg(int n)
{
if(n == 1)
{
return 1;
}
return n*total_arg(n-1);
}