要求:
Examples
zeros(6) = 1
# 6! = 1 * 2 * 3 * 4 * 5 * 6 = 720 --> 1 trailing zero
zeros(12) = 2
# 12! = 479001600 --> 2 trailing zeros
解法一:
#include <iostream>
#include <cmath>
using namespace std;
long zeros(long n) {
double kp = log(n) / log(5);
int k = floor(kp);
int z{ 0 };
for (int i = 0; i < k; i++) {
z += floor(n / pow(5, i + 1));
}
return z;
}
计算阶乘尾随零数的文档:
优秀解法:
long zeros(long n) {
long result = 0;
while(n)
result += n/=5;
return result;
}