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

    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


    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<cmath>
    using namespace std;
    int work(int m,int n)  
    {  
        int sum1=0,sum2=0;  
        for(int i=m,j=n;j>0;i--,j--)  
        {  
            int a=i;  
            int b=j;  
            while(a%2==0)  
            {  
                sum1++;  
                a/=2;  
            }  
            while(b%2==0)  
            {  
                sum2++;  
                b/=2;  
            }  
        }     
            return sum1-sum2;  
          
    }  
              
    int main()  
    {  
        int T,m,n;  
        cin>>T;  
        while(T--)  
        {  
            cin>>m>>n;  
            cout<<work(m,n)<<endl;  
        }  
        return 0;  
    }  
    /**********************************************************************
    	Problem: 1021
    	User: song_hai_lei
    	Language: C++
    	Result: AC
    	Time:0 ms
    	Memory:2024 kb
    **********************************************************************/
    


  • 相关阅读:
    常用Git命令清单
    上海金瑢信息有限公司面试
    上海视频面试
    bootstrp-3.0
    B站小姐姐面试分享2
    B站小姐姐分享第一次电话面试
    Array.from()方法就是将一个类数组对象或者可遍历对象转换成一个真正的数组。
    findIndex
    es5,es6
    es6数组去重
  • 原文地址:https://www.cnblogs.com/csushl/p/9386556.html
Copyright © 2011-2022 走看看