• ACM求C(m, n) = m!/((m


    Description

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

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

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

    Input

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

    Output

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

    Sample Input

    2

    4 2

    1000 500

    Sample Output

    1

    6

       解题思路:这个题目就是求因子的个数, m!/((m-n)!*n!)等于从n+1一直乘到m的乘积除以m-n的阶乘,即求n+1到m中因子的个数减去1到m-n的因子的个数即可。

      程序代码:

    #include <iostream>
    using namespace std;
    int main()
    {
          int T;
          cin>>T;
          while(T--)
          {
                int m,n;
                cin>>m>>n;
                int r=0,v=0;
                for(int i=n+1;i<=m;i++)
                {
                      int s=i;
                      while(s%2==0)
                      {
                            s=s/2;
                            r++;
                            
                      }
                }
                for(int j=1;j<=m-n;j++)
                {
                      int b=j;
                      while(b%2==0)
                      {
                            b=b/2;
                            v++;
                            
                      }
                }
                printf("%d
    ",r-v);
          }
     
          return 0;
    }
  • 相关阅读:
    1009 说反话 (20 分)
    1007 素数对猜想 (20 分)
    Visual Studio2017下载方法
    百词斩和扇贝打卡测试与评估
    创建者模式->工厂模式
    STM32F427|----------IO讲解与应用
    MySQL的索引
    STM32F103RCt6 与 MG996R
    2020物联网实验室的考核题目
    初学数据库-MySQL&IDEA&Navicat
  • 原文地址:https://www.cnblogs.com/xinxiangqing/p/4655410.html
Copyright © 2020-2023  润新知