[300] 2004번 조합 0의 개수

younoah·2022년 1월 12일
0

[백준-기초]

목록 보기
28/29

2004번 조합 0의 개수

문제

(nm)의 끝자리 0의 개수를 출력하는 프로그램을 작성하시오.

입력

첫째 줄에 정수 n, m (0≤m≤n≤2,000,000,000, n≠0)이 들어온다.

출력

첫째 줄에 (nm)의 끝자리 0의 개수를 출력한다.

예제 입력 1 복사

25 12

예제 출력 1 복사

2

코드

//---- 세팅 ----//
const fs = require('fs');
const stdin = (
  process.platform === 'linux'
    ? fs.readFileSync('/dev/stdin').toString()
    : `\
25 12
`
).split('\n');

const input = (() => {
  let line = 0;
  return () => stdin[line++];
})();

//---- 풀이 -----//

const [n, m] = input().split(' ').map(Number);

const getTwoFive = x => {
  let five = 0;
  let two = 0;
  for (let i = 2; i <= x; i *= 2) {
    two += parseInt(x / i);
  }
  for (let i = 5; i <= x; i *= 5) {
    five += parseInt(x / i);
  }
  return [two, five];
};

const [nt, nf] = getTwoFive(n);
const [mt, mf] = getTwoFive(m);
const [nmt, nmf] = getTwoFive(n - m);
const two = nt - mt - nmt;
const five = nf - mf - nmf;

console.log(Math.min(two, five));

풀이

이전의 팩토리얼 0의 개수와 같은 방식으로 풀어준다.

다만 조합의 공식인 nCr = n! / r! * (n-r)! 이므로 n!에서 사용된 2와 5의 개수를 더하고, r!(n-r)!에서 사용된 2와 5의 개수는 빼주면 된다.

참고한 블로그 : https://leylaoriduck.tistory.com/513?category=880546

profile
console.log(noah(🍕 , 🍺)); // true

0개의 댓글