计算n的阶乘末尾有多少个0?
问题分析:n! = 1 * 2 * 3 * 4 * 5 * 6 * 7 * 8 * 9 * 10 *......*n,可以发现要想后面出现一个0,就要满足n * m = 10;只有2 * 5 = 10;
把乘式进行分解,显然2的个数多余5的个数,因此有多少个5就会有多少个0;
当5 * 5时,就会有两个5,因此要加上另一个5,5 * 5 * 5要再多加一个5
因此0的数量num = n / 5 + n / (5*5) + n / (5 * 5 *5).....
#include<iostream>
using namespace std;
int main()
{
long long n, res = 0;
cin >> n;
while(n)
{
res += n / 5;
n /= 5;
}
cout << res << endl;
return 0;
}