zoukankan      html  css  js  c++  java
  • POJ 1401 Factorial

    题意很好理解,给定一个N数,求N!末尾有多少个连续0?

    我们知道,一个数的阶乘中含有一个10(20,30,40.。。。)都可以再末尾增加一个0,存在一个2*5,4*15.。。。也可以增加一个0;也就是说,从5开始,凡是遇到5,10,15,20,25,30,35。。。。都要增加一个0.至于5需要一个偶数来乘,偶数比5多得多,就不用考虑够不够乘的问题了。

    但是其中有一点很关键。就是类似于25,125,625这些数。

    注意观察发现25=5*5,125=5*5*5,625=5*5*5*5;也就是说,25能拆分成2个5来和偶数乘,故而能产生2个0,125能产生3个0,625产生4个。。。。。

    所以算法就有了,如下:

     

    #include <iostream>

    using namespace std;//这道题的意思就是你让一个数做阶乘,最后有多少个0

    int main() {

        int m,a;

        cin>>m;

        for(int i=0;i<m;i++)

        {

            int sum=0;

            cin>>a;

           while(a)

           {

               sum+=a/5;

               a=a/5;

           }

            cout<<sum<<endl;

        }

        return 0;

    }

  • 相关阅读:
    前端基础学习分享
    IOS中block和代理
    最近一个项目的反思
    Coreseek Windows下安装调试
    iOS对象属性详解
    我眼里“维多利亚的秘密”中最性感的营销三点式
    用CSS制作带图标的按钮
    简单权限管理设计
    CentOS工作内容(三)配置网络IP地址
    CentOS工作内容(二)关闭SELinux
  • 原文地址:https://www.cnblogs.com/guohaoyu110/p/6343508.html
Copyright © 2011-2022 走看看