1. 阶乘后的0

  1. // 求解 n! 质因子10的个数,而10 = 2 * 5。
  2. // 因此转换成求n!中质因子 2 的个数和质因子 5 的个数的较小值。
  3. // 最终求n!中质因子5的个数
  4. int trailingZeroes(int n) { // 时间复杂度O(logn)
  5. int cnt = 0;
  6. while (n) {
  7. n /= 5;
  8. cnt += n;
  9. }
  10. return cnt;
  11. }
  12. int trailingZeroes(int n) { // 时间复杂度O(n)
  13. int cnt = 0;
  14. for (int i = 1; i <= n; i++) {
  15. int num = i;
  16. while (num % 5 == 0) {
  17. cnt++;
  18. num /= 5;
  19. }
  20. }
  21. return cnt;
  22. }

2.