错排公式:
f(n)=(n-1)*[f(n-1)+f(n-2)];
注意:在杭电上用__int 64,用long long 就WA了。
#include<stdio.h>
__int64 f[21];
void fun()
{
f[1]=0;
f[2]=1;
for(int i=3;i<=20;i++)
f[i]=(i-1)*(f[i-1]+f[i-2]);
}
int main()
{
int n;
fun();
while(scanf("%d",&n)!=EOF){
printf("%I64d\n",f[n]); //杭电需要用I64,用long long 型过不了。
}
return 0;
}