一、 问题描述
二、算法思想
- 初始化count为0,即因子5的个数
- 循环计算i从1到n的阶乘: a. 若i是5的倍数,则计算i除以5的结果,加到count上 b. 循环计算i除以5的结果是否还是5的倍数,若是,则再次计算结果除以5的结果,直到不是5的倍数为止,每次计算结果加到count上
- 返回count作为结果。
三、代码实现
#include <stdio.h>
int countEndingZeros(int n) {
int count = 0;
while (n >= 5) {
count += n / 5;
n /= 5;
}
return count;
}
int main() {
int n;
scanf("%d", &n);
int zeros = countEndingZeros(n);
printf("%d\n", zeros);
return 0;
}
方法分析
算法时间复杂度为O(logn)
执行结果
结语
所有的轻而易举的背后
都是常人难以想象的付出与磨炼
!!!