首页 > 其他 > 详细

【转】HDU-2049-不容易系列之(4)——考新郎:错排+组合

时间:2015-08-20 12:19:15      阅读:123      评论:0      收藏:0      [点我收藏+]

现对于上一道”神、上帝以及老天爷” 只求M个数的错排数 不同的本题 是求N个数中M的错排数

先从N个数中 取M个数有CnM种取法 再乘上M的错排数就是答案 错排数的求法参考上一篇文章

其中组合公式如下

        技术分享 

#include<iostream>
#include<string>
#include<iomanip>
using namespace std;

int main()
{

    long long a[21]={0, 0, 1}; //  a[i]表示i个数的错排种类
    long long b[21]={1, 1, 2};  //  b[i]表示i的阶乘
    for(int i=3; i<21; i++)
        a[i]=(i-1)*(a[i-1]+a[i-2]);
    for(int i=3; i<21; i++)
        b[i]=b[i-1]*i;
    int C;
    cin>>C;
    while(C--)
    {
         int N, M;
         cin>>N>>M;
         long long CnM=b[N]/b[N-M]/b[M];// N 个数的M组合数
         cout<<CnM*a[M]<<endl;
    }
	return 0;
}

  

【转】HDU-2049-不容易系列之(4)——考新郎:错排+组合

原文:http://www.cnblogs.com/FightForCMU/p/4744706.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!