치춘 2022. 7. 3. 00:59

팩토리얼 0의 개수

문제

N!에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 N이 주어진다. (0 ≤ N ≤ 500)

출력

첫째 줄에 구한 0의 개수를 출력한다.

풀이

const factorial = () => {
  let n = Number(require("fs").readFileSync("/dev/stdin").toString().trim());
  let ans = 0;
  for (let i = 1; i <= n; i++) {
    if (i % 125 === 0) ans += 3;
    else if (i % 25 === 0) ans += 2;
    else if (i % 5 === 0) ans += 1;
  }
  console.log(ans);
};

factorial();

반성회

굳이 팩토리얼 계산 안 하고 5의 개수 세어서 풀었다

25는 5의 2제곱이라 5가 두번 들어가므로 +2, 125는 5의 3제곱이라 5가 3번 들어가므로 +3

2와 5가 곱해져야 10이 되어서 0이 하나 추가되긴 하지만, 5의 개수보다 2의 개수가 훨씬 많기 때문에 (한 번 걸러 한번씩 늘어나므로) 5의 개수만 세어줘도 맞다