CSU 1021 从m个不同元素中取出n (n ≤ m)个元素的所有组合的个数,叫做从m个不同元素中取出n个元素的组合数。组合数的计算公式如下: C(m, n) = m!/((m

题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=82974#problem/B

解题思路:这个题目就是求因子的个数, m!/((m-n)!*n!)等于m到n的阶乘除以m-n的阶乘,即求m到n中因子的个数减去m-n到1的因子的个数即可

程序代码:

#include <iostream>
using namespace std;
  int t,m,n,i;
int main()
{

    cin>>t;
    while(t--)
        {
        cin>>m>>n;
      int   r=0,w=0;
        for( i=m-n+1;i<=m;i++)
        {
               int  s=i;
            while(s>1)
            {
                if(s%2!=0||s==0) break;
                r++;
                s/=2;
            }
        }
        for(i=2;i<=n;i++)
        {
           int  s=i;
             while(s>1)
             {
                if(s%2!=0||s==0)  break;
                w++;
                s/=2;
            }
        }
        cout<<r-w<<endl;

    }
    return 0;
}
版权声明:此代码归属博主, 请务侵权!
原文地址:https://www.cnblogs.com/www-cnxcy-com/p/4652473.html