• 组合数末尾的零


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


  • 相关阅读:
    Objective-C中#define的常见用法
    OpenGL ES为缓存提供数据的7个步骤
    绕指定点旋转算法
    矩阵平移旋转缩放公式
    矩阵和向量的乘法顺序
    干货集合
    RGB颜色空间与YCbCr颜色空间的互转
    UINavi中push控制器的时候隐藏TabBar
    CZLayer的阴影
    CALayer初认识
  • 原文地址:https://www.cnblogs.com/csushl/p/9386556.html
Copyright © 2020-2023  润新知