zoukankan      html  css  js  c++  java
  • n!末尾有多少个0以及n!末尾第一个非0数字

    (1)n!末尾有多少个0

        第一种思路:

        n!=n*(n-1)*(n-2)*....3*2*1,而如果要出现0,必须得有2和5出现,但是明显n!中5的因子个数少于2的因子个数,即转化为求 n!中因子5的个数

        int count(int n)

        {  

        int sum=0;

               while(n)

               {

          sum+=n/5;

                     n/=5;

               }

               return sum;

         }

         第二种思路:计算n!,每次末尾出现0,则将0消去,计数器并自增1

          int count=0;

          int ans=1;

            for(i=n;i>=2;i--)
            {
                ans*=i;
                while(ans%10==0)        //消除末尾的0
                {

                    ans/=10;

                    count++;
                }
                if(ans>=100000)           //只需保存末尾5位数字即可
                    ans%=100000;

            }

              while(ans%10==0)        //消除末尾的0
              {

                    ans/=10;

                    count++;
              }

             count即为所求

    (2)n!末尾第一个非0数字

        两种思路

        第一种:直接求出n!,然后得出结果

        第二种:按照问题(1)中的第二种思路解决即可。

  • 相关阅读:
    程序人生系列之新闻发布系统 1217
    $("expr","expr")
    jQuery 插件开发by:ioryioryzhan
    jQuery插件开发全解析 by gaojiewyh
    前端水好深
    网页设计师一定要知道的网站资源
    jQuery end()方法 by keneks
    前端书籍 by 小精灵
    emacs命令速查 摘
    jquery要怎么写才能速度最快? by 大白
  • 原文地址:https://www.cnblogs.com/dolphin0520/p/2014529.html
Copyright © 2011-2022 走看看