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
    **********************************************************************/
    


  • 相关阅读:
    gitlab搭建
    java数组
    安裝nextcloud
    Spring的定时任务@Scheduled(cron = "0 0 1 * * *")
    java内存结构(下)
    java内存结构(上)
    多线程的三个特性
    @RequestBody用法
    SwaggerAPI注解详解(转载)
    在jpanel中添加jbutton并自由设置按钮大小和位置
  • 原文地址:https://www.cnblogs.com/csushl/p/9386556.html
Copyright © 2011-2022 走看看