求N!尾数有多少个0

Posted 霜雪千年

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求N!尾数有多少个0相关的知识,希望对你有一定的参考价值。

方法一:直接求因子5的个数。

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int main(){
 4     int n,cnt,tmp;
 5     while(cin>>n){
 6         cnt=0;
 7         for(int i=5;i<=n;i+=5){
 8             tmp=i;
 9             while(tmp%5==0)cnt++,tmp/=5;//累加因子5的个数
10         }
11         cout<<cnt<<endl;
12     }
13     return 0;
14 }

方法二:分治法。

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int main(){
 4     int n,cnt;
 5     while(cin>>n){
 6         cnt=0;
 7         while(n)cnt+=n/5,n/=5;
 8         cout<<cnt<<endl;
 9     }
10     return 0;
11 }

以上是关于求N!尾数有多少个0的主要内容,如果未能解决你的问题,请参考以下文章

阶乘后的零(力扣第172题)

阶乘后的零(力扣第172题)

100的阶乘末尾有多少个零!急求程序!

用递规函数求20的阶乘

程序员面试金典-面试题 16.05. 阶乘尾数

面试题 16.05. 阶乘尾数