CSU1021组合数末尾的零

13人阅读 评论(0) 收藏 举报
分类:

1021: 组合数末尾的零

Submit Page    Summary    Time Limit: 1 Sec     Memory Limit: 128 Mb     Submitted: 710     Solved: 478    

Description

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

C(mn) = m!/((n)!n!) 

现在请问,如果将组合数C(mn)写成二进制数,请问转这个二进制数末尾有多少个零。

Input

第一行是测试样例的个数T,接下来是T个测试样例,每个测试样例占一行,有两个数,依次是mn,其中≤ ≤ 1000。

Output

分别输出每一个组合数转换成二进制数后末尾零的数量。

Sample Input

24 21000 500

Sample Output

16

Hint

Source

中南大学第四届大学生程序设计竞赛


对于任意一个数,只有它乘以2才能使它的二进制数后面多一个0

对于n!, 需要找出从1到n这些数中的所有数的二进制有多少个0,再加起来就行了


#include<cstdio> 
int p(int n)
{
	int sum=0;
	for(int i=1;i<=n;i++)
	{
		int x=i;
		while(x)
		{
			if(x&1)	break;
			sum++;
			x>>=1;
		}
	}
	return sum;
}
int main()
{
	int n,m,t;
	scanf("%d",&t);
	while(t--)
	{
		scanf("%d %d",&n,&m);
		printf("%d\n",p(n)-p(n-m)-p(m));
	}
	return 0;
}





查看评论

csu 1021 组合数末尾的零(思路)

组合数末尾的零 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 417  Solved: 284 [Submit][Status][Web B...
  • acm_cxq
  • acm_cxq
  • 2016-08-19 09:58:36
  • 468

CSU-1021

直接写超时,二进制末尾的0个数,可以联想到,当我们将一个10进制转化为二进制时不断除以2,然后将余数逆序排起来。那么二进制末尾的0个数就是十进制刚开始能被2连续整除的次数。 #include #i...
  • jelly97
  • jelly97
  • 2017-04-21 21:43:00
  • 96

CSU1021: 组合数末尾的零

题目链接:点击打开链接 题中所求是C(m, n)转换为二进制数后,其末尾有多少个0,我们可以利用公式C(m, n) = m!/((m - n)!n!) 将C(m, n) 直接求出来,然后将其对...
  • rivenyzp
  • rivenyzp
  • 2016-09-11 11:50:33
  • 79

组合数末尾的零

组合数末尾的零 Time Limit: 1000 MS Memory Limit: 65536 K Total Submit: 172(113 u...
  • lsgqjh
  • lsgqjh
  • 2015-04-11 08:44:52
  • 1226

哈理工OJ 1037组合数末尾的零(思维)

组合数末尾的零 Time Limit: 1000 MS Memory Limit: 65536 K Total Submit: 250(168 u...
  • mengxiang000000
  • mengxiang000000
  • 2016-01-14 17:22:29
  • 713

Hust oj 1037 组合数末尾的零(组合数)

组合数末尾的零 Time Limit: 1000 MS Memory Limit: 65536 K Total Submit: 378(179 u...
  • Sara_YF
  • Sara_YF
  • 2016-05-13 11:15:00
  • 554

CSU 1021 组合数末尾的零

题目:Description从m个不同元素中取出n (n ≤ m)个元素的所有组合的个数,叫做从m个不同元素中取出n个元素的组合数。组合数的计算公式如下:C(m, n) = m!/((m - n)!n...
  • nameofcsdn
  • nameofcsdn
  • 2016-08-23 23:48:29
  • 1337

ACM:组合数末尾的零

ACM:组合数末尾的零Description从m个不同元素中取出n (n ≤ m)个元素的所有组合的个数,叫做从m个不同元素中取出n个元素的组合数。组合数的计算公式如下:C(m, n) = m!/((...
  • niu15273122295
  • niu15273122295
  • 2017-05-09 15:15:19
  • 128

POJ NOI MATH-7657 连乘积末尾0的个数

问题链接:POJ NOI MATH-7657 连乘积末尾0的个数。 总时间限制: 1000ms内存限制: 65536kB 描述 给定两个正整数a,b(a a×(a+1)×(a+2)×....
  • tigerisland45
  • tigerisland45
  • 2017-04-04 22:52:00
  • 522

末尾零的个数(数论)

末尾零的个数N! 末尾有多少个 000 呢?N!=1×2×⋯×NN! = 1 \times 2 \times \cdots \times NN!=1×2×⋯×N。里面讲到只有2和5遇到才会产生0(或者...
  • codeswarrior
  • codeswarrior
  • 2018-03-28 18:09:38
  • 50
    个人资料
    持之以恒
    等级:
    访问量: 918
    积分: 411
    排名: 11万+
    文章存档