• 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


    #include<stdio.h>
    #include<string.h>
    #include<iostream>
    using namespace std;
    int numer(int n){
    int num=0;
    for(int i=1;i<=n;i++){

    int x =i;
    while(x!=0){
    int y =x%2;
    if(y!= 0)
    break;
    else{
    num++;
    x=x/2;
    }

    }

    }

    return num;
    }

    int main()
    {
    int num;
    cin>>num;
    for(int i =0;i<num;i++){
    int m,n;
    cin>>m>>n;
    // cout<<numer(m)<<" "<<" "<<numer(m-n)<<" "<<numer(n)<<endl;
    cout<<(numer(m)-numer(m-n)-numer(n))<<endl;


    }



    }

  • 相关阅读:
    java web数据可视化
    全国疫情统计可视化地图
    数组中的学问
    软件工程第二周开课博客
    梦断代码阅读笔记1
    补充urllib
    多用户登录
    学期课后个人总结
    团队冲刺第二十六天
    团队冲刺第二十五天
  • 原文地址:https://www.cnblogs.com/cyj1258/p/8810037.html
Copyright © 2020-2023  润新知