zoukankan      html  css  js  c++  java
  • 1021: 组合数末尾的零

    题目:

    Description

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

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

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

     

    Input

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

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

     Sample Input

      2 

      4 2

    1000 500 

    Sample Output

     1

     6

     思路:

    一个十进制数如果是2的多少次方,它的二进制数末尾就有多少个零。

     <1> 分别找出组合数分子,分母中含有2的个数count1,count2;

    <2> 所求的末尾0的个数count=count1-count2;

     

    注:如果求出组合数后再去求末尾有几个零会超内存;因为题目所要求的范围。

     

     1 #include<iostream>
     2 using namespace std;
     3 int main()
     4 {
     5     int t,m,n,i,count1,count2,count,x;
     6       cin>>t;
     7 while(t--)
     8 {
     9     count=0;
    10     count1=0;
    11     count2=0;
    12 cin>>m>>n;
    13 for(i=n+1;i<=m;i++)
    14 {
    15    x=i;
    16    while(x%2==0)
    17 {
    18    count1++;
    19    x=x/2;
    20 }
    21 }
    22 for(i=m-n;i>=1;i--)
    23 {
    24   x=i;
    25 while(x%2==0)
    26 {
    27   count2++;
    28   x=x/2;
    29 }
    30 }
    31 count=count1-count2;
    32 cout<<count<<endl;
    33 }
    34 return 0;
    35 }

     

     

  • 相关阅读:
    搭建单区域DNS服务器
    安装一个KVM服务器
    配置HTTPS网站服务器
    部署并测试动态WSGI站点
    java内置的四大函数式接口
    java自定义异常类
    java方法重写的规定
    spring跨重定向传递数据
    SpringEl表达式(转)
    Spring中的@conditional注解
  • 原文地址:https://www.cnblogs.com/fenhong/p/4653578.html
Copyright © 2011-2022 走看看