hdu 2049 不容易系列之(4)——考新郎

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

这是一道错排题,可是比赤裸裸的要多一点东西。因为m个人错排,可是不知道是哪m个错排,所以要用到高中排列组合,即调用函数的公式:

代码:

#include <stdio.h>

#include <string.h>

#include <stdlib.h>

#include <math.h>

__int64 mm(int x,int y)

{

    __int64 sum=1;

    for(int i=x;i>=x-y+1;--i)

    sum*=i;

    for(int j=y;j>=2;--j)

    sum/=j;

    return sum;

}

int main()

{

    __int64 a[22];

    int t,n,m;

    a[1]=0;a[2]=1;

    for(int i=3;i<=20;++i)

    a[i]=(i-1)*(a[i-1]+a[i-2]);

    scanf("%d",&t);

    while(t--)

    {

              scanf("%d%d",&n,&m);

              printf("%I64d\n",mm(n,m)*a[m]);

    }

    return 0;

}

posted @ 2011-08-11 15:51  ○o尐懶錨o  阅读(595)  评论(0编辑  收藏  举报