您的位置:首页 > 其它

CSU 1021 从m个不同元素中取出n (n ≤ m)个元素的所有组合的个数,叫做从m个不同元素中取出n个元素的组合数。组合数的计算公式如下: C(m, n) = m!/((m - n)!n!) 现在请问,如果将组合数C(m, n)写成二进制数,请问转这个二进制数末尾有多少个零。

2015-07-16 20:48 519 查看
题目链接: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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: