时间限制:1秒
空间限制:32768K
输入一个自然数n,求表达式 f(n) = 1!2!
3!
.....
n! 的结果末尾有几个连续的0?
输入描述:
自然数n
输出描述:
f(n)末尾连续的0的个数
输入例子1:
11
输出例子1:
9
这道题目是普通n!求末尾有几个连续的0的简单拓展版,对于n!来说,只需要计算素因子5的个数,计算公式是
n/5+n/5^2 + n/5^3... 。这是一道常考的简单数论题目
#include <iostream>
using namespace std;
int getnum(int n)
{
int res = 0;
int m = 5;
while (n) {
res+=n /= m;
m *= m;
}
return res;
}
int main()
{
int n;
cin >> n;
int res = 0;
for (int i = 1; i <= n; i++) {
res += getnum(i);
}
cout << res << endl;
}