hdu 2068

地址:http://acm.hdu.edu.cn/showproblem.php?pid=2068

题意:中文。

mark:如果知道错排公式就很简单了。

wa了一次。。。<=写成了<。。。PE一次。莫名其妙多加了个空格。sb了。

代码:

# include <stdio.h>


long long c[30][30] = {1} ;
long long cp[15] = {0, 0, 1} ;


void init()
{
int i, j ;
for (i = 1 ; i <= 25 ; i++)
{
c[i][0] = 1 ;
for (j = 1 ; j <= i ; j++)
c[i][j] = c[i-1][j] + c[i-1][j-1] ;
}
for (i = 3 ; i <= 12 ; i++)
cp[i] = (i-1) * (cp[i-1] + cp[i-2]) ;

}


int main ()
{
int i, n ;
long long ans ;
init() ;
while (~scanf ("%d", &n), n)
{
ans = 1 ;
for (i = 2 ; i <= n/2 ; i++)
ans += c[n][i] * cp[i] ;
printf ("%I64d\n", ans) ;
}
return 0 ;
}



posted @ 2012-01-13 07:08  Seraph2012  阅读(223)  评论(0编辑  收藏  举报