|
|||
description |
|||
计算N!末尾有多少个0 |
|||
input |
|||
输入数据有多组,每组1行,每行1个数N(10 <= N <=100000000) |
|||
output |
|||
在一行内输出N!末尾0的个数。 |
|||
sample_input |
|||
10 100 |
|||
sample_output |
|||
2 24 |
举例分析一下公式~~摘自baidu
正好看过这个的算法,2*5=10,在一个数N中,因子2出现的次数总比5出现的次数多,比如说10!
零的个数可以由这样算出
10/5=2
2/5=0
0的个数就是2+0=2,再来个例子,2008
2008/5=401
401/5=80
80/5=16
16/5=3
0的个数就是401+80+16+3=500个零
嗯哼~~~
#include <iostream> #include <math.h> using namespace std; int main() { int n,sum; while(cin>>n) { sum=0; while(n) { n=n/5; sum+=n; } cout<<sum<<endl; } return 0; }
原文:http://www.cnblogs.com/nefu929831238/p/5132681.html