• tyvj4877 组合数


    1.组合数

    (zero.cpp/c/pas)

    时间限制:1s

    内存限制:256MB

    【问题述】

             从m个不同元素中,任取n(n≤m)个元素并成一组,叫做从m个不同元素中取出n个元素的一个组合;从m个不同元素中取出n(n≤m)个元素的所有组合的个数,叫做从m个不同元素中取出n个元素的组合数,记作C(m,n)。

             你的任务是:计算C(m,n)末尾有几个0。如C(10,1)=10,末位有一个0。

    【输入】

    输入文件名为zero.in。

    第一行一个数T(<=1000),表示数据组数

    对于每一组数据:输入两个数,m和n

    【输出】

    输出文件名为zero.out。

    对于每组数据输出一行,包含一个数,表示C(m,n)末尾有几个0

    智障题目,0的个数就是2和5中较小者的个数

    #include<stdio.h>
    #include<algorithm>
    using namespace std;
    #define MAXN 1000000
    int cnt5[MAXN+10],cnt2[MAXN+10];
    void init(){
        for(int i=1;i<=MAXN;i++){
            int p=i;
            while(p%5==0)p/=5,cnt5[i]++;
            while(!(p&1))p>>=1,cnt2[i]++;
            cnt5[i]+=cnt5[i-1];
            cnt2[i]+=cnt2[i-1];
        }
    }
    int main(){
        init();
        int T;
        scanf("%d",&T);
        while(T--){
            int m,n;
            scanf("%d%d",&m,&n);
            int ans=min(cnt2[m]-cnt2[n]-cnt2[m-n],cnt5[m]-cnt5[n]-cnt5[m-n]);
            printf("%d
    ",ans);
        }
        return 0;
    }
  • 相关阅读:
    图的邻接链表实现(c)
    图的邻接矩阵实现(c)
    好文
    第13章 红黑树
    函数 setjmp, longjmp, sigsetjmp, siglongjmp
    域名解析
    wget www.baidu.com执行流程分析
    信号处理篇
    第11章 散列表
    第10章,基本数据结构(栈,队列)
  • 原文地址:https://www.cnblogs.com/NINGLONG/p/7606878.html
Copyright © 2020-2023  润新知