这一题就是单纯的考察错排,也就是考察递推。
基本形式:d[1]=0; d[2]=1
递归式:d[n]= (n-1)*( d[n-1] + d[n-2])
这就是著名的错排公式
#include <stdio.h>
#define DEBUG 1
int main()
{
#if DEBUG
freopen("C:\\Documents and Settings\\Administrator\\桌面\\in.in","r",stdin) ;
freopen("C:\\Documents and Settings\\Administrator\\桌面\\out.out","w",stdout) ;
#endif
__int64 i, n, s, geshu, a1, a2, temp ;
while( EOF != scanf("%I64d", &n ) ){
a1 = 0 ;
a2 = 1 ;
for( i=1; i<=n; ++i ){
temp = a2 ;
a2 = (i-1) * (a1+a2) ;
a1 = temp ;
}
printf("%I64d\n", a2 ) ;
}
return 0 ;
}