题目描述
输入一个正整数n,求n!(即阶乘)末尾有多少个0? 比如: n = 10; n! = 3628800,所以答案为2
输入描述:
输入为一行,n(1 ≤ n ≤ 1000)
输出描述:
输出一个整数,即题目所求
示例1
输入
10
输出
2
分析
思路一:
末尾出现0的情况只有因子5*2得到,由于2,6,8都可以看作为因子2,所以因子2的个数大于因子5的个数,所以只需要考虑5的个数即可。由于25,125,625不只有一个因子5,由此需要求完后递归调用n/5。
思路二:
能被5(5^1)整除的提供1个0
能被25(5^2)整除的提供2个0
能被125(5^3)整除的提供3个0
能被625(5^4)整除的提供4个0
所以 结果= n/5 + n/25 + n/125 + n/625
代码
//链接:https://www.nowcoder.com/questionTerminal/6ffdd7e4197c403e88c6a8aa3e7a332a
//来源:牛客网
#include<iostream>
#include<iomanip>
#include<string>
#include<vector>
using namespace std;
int main()
{
int n, counter=0;
cin >> n;
while (n/=5)
{
counter += n;
}
cout << counter;
return 0;
}