杭电hdu 2068 RPG的错排 简单题

来源:互联网 发布:象棋软件 编辑:程序博客网 时间:2024/05/16 12:10

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

错排公式:f(i) = (i - 1) * [f(i-1) + f(i-2)]。

//错排#include <stdio.h>int main(){double fac[26], staggered[26];int i, n;fac[0] = 1, fac[1] = 1, fac[2] = 2;staggered[0] = 1, staggered[1] = 0, staggered[2] = 1;for(i = 3; i < 26; i ++){fac[i] = i*fac[i-1];staggered[i] = (i-1)*(staggered[i-1]+staggered[i-2]);//printf("fac[%d] = %.lf\n", i, fac[i]);}while(scanf("%d", &n)&&n){double sum = 0;for(i = 0; i <= n/2; i ++){sum += fac[n]/fac[i]/fac[n-i]*staggered[i];}printf("%.lf\n", sum);}return 0;}


原创粉丝点击