这个问题叫做错排问题,
错排公式是f[n]=(n-1)*(f[n-1]+f[n-2]);
题上给出了第1,2,3,5,6项的值,需要你手推第四项,然后找规律。
AC代码:
#include<cstdio>
int a[100100];
int main()
{
a[1]=0;
a[2]=1;
a[3]=2;
for(int i=4;i<=100000;i++)
a[i]=(i-1)*(a[i-1]+a[i-2])%10007;
int t,x;
scanf("%d",&t);
while(t--)
{
scanf("%d",&x);
printf("%d\n",a[x]);
}
}