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 ;
}