一、题目描述
题目网址:http://class.51nod.com/Challenge/Problem.html#problemId=1003
n的阶乘后面有多少个0?
6的阶乘 = 1*2*3*4*5*6 = 720,720后面有1个0。
一个数N(1 <= N <= 10^9)
输出0的数量
5
1
二、思路描述
一个数末尾有多少个0,是由这个数中因子2和5的数量决定的。1200=24×3×52。其中2的幂次为4,5的幂次为2,min(4,2)=2?所以有2个0?。250 = 2×53,其中2的幂次为1?,5?的幂次为?3,?min(3,1)=1所以有1个0?。n!中5的幂次一定小于2的幂次,所以问题转为,求n!中5的幂次是多少。小于n的所有5的倍数,都包含1个因子5。但这还丌够,因为除了考虑5的倍数乊外还需要考虑25的倍数,125的倍数...。其中5的倍数共有n/5个,?25的倍数共有n/25个....。
三、代码
#include<cstdio> #include<iostream> using namespace std; int main(){ long long n, sum=0, cur=5; cin >> n; while(n >= cur){ sum += n / cur; cur = cur * 5; } cout << sum << endl; return 0; }
原文:https://www.cnblogs.com/elisa02/p/12811208.html