zoukankan      html  css  js  c++  java
  • 找出n!末尾有几个0?

    解法一:找出n!中质数2和质数5的个数,由于能被2整除的数的个数比能被5整除的数多的多,因为只需求出质数5的个数。利用Z=[Z/5]+[Z/25]+[Z/125]+....,其中[Z/5]表示<=z的数中含有质数5的个数。。代码:

    #include<iostream>
    using namespace std;
    int main()
    {
        int n,sum;
        sum=0;
        cin>>n;
        while(n)
        {
            n/=5;
            sum+=n;
        }
        cout<<sum<<endl;
        system("pause");
        return 0;
    }

    解法二:代码:

    #include<iostream>
    using namespace std;
    int main()
    {
      int n;
      int num,p;
      n = 0;
      cin>>num;
      for(int i=1; i<=num; i++)
      {
        p = i;
        while(p % 5 == 0)
        {
          p/= 5;
          n++;
        }
      }
      cout<<n<<endl;
      return 0;
    }

    解法三(存储一定数):代码:

    #include<iostream>
    using namespace std;
    int main()
    {
        int nNum,sum,i,loop;
        while(cin>>nNum)
     {
       sum=1;
      loop=0;
      for(i=nNum;i>=1;i--)
      {
        sum*=i;
        while(sum%10==0)//消0
        {
            sum/=10;
            loop++;
        }
        if(sum>=100000)//保存末尾5位数字即可
          sum%=100000;
      }
       while(sum%10==0)//消0
        {
            sum/=10;
            loop++;
        }
      cout<<loop<<endl;
     }
     return 0;
    }
    
    //这种解法后面解“从最末一个非0位开始自低位向高位数的第1或K位”还有用,同理
  • 相关阅读:
    三大范式
    html 横线的代码
    CSS下拉 菜单3.27第一次
    JS页面三种打开方式及对话框
    函数整理
    3.22整理作业
    for循环,if 练习
    php测试题
    设计模式
    面向对象的三大特性
  • 原文地址:https://www.cnblogs.com/sooner/p/2995803.html
Copyright © 2011-2022 走看看