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萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章