HDU2049错排问题

题目出自杭电
题目
思路:因此先找到N个新郎中M个错一共有几种,是Cm(n)=N!/M!/(N-M)!
再乘以错排公式f[n]=(n-1)*(f[n-1]+f[n-2])

#include <stdio.h>
int main()
{
    int n,m,i,a;
    __int64 f[25],c[25];
    f[0]=1,f[1]=1,f[2]=2;
    for(i=3;i<21;i++)
    {
        f[i]=f[i-1]*i;
    }
    c[0]=0,c[1]=1,c[2]=1,c[3]=2;
    for(i=4;i<21;i++)
    {
        c[i]=(i-1) * (c[i-1]+c[i-2]);
    }
    scanf("%d",&a);
    while(a--)
    {
        scanf("%d %d",&n,&m);
        printf("%I64d\n",f[n]/f[m]/f[n-m]*c[m]);
    }
    return 0;
}
发布了47 篇原创文章 · 获赞 6 · 访问量 1万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章