백준 문제풀이

2004. 조합 0의 개수

뮤츠 2022. 10. 29. 22:24

앞 문제인 1676번 문제와 비슷한데, 팩토리얼 대신 이항계수가 되었습니다.

원리는 똑같습니다. 소인수 분해해서 2*5 = 10의 곱해진 수를 따져줘야하는데, 앞선 팩토리얼은 무조건 2의 제곱수가 5의 제곱수보다 컸지만, 이 문제는 2와 5를 경합해서 최솟값을 뽑아줘야 합니다. 그거말곤 다 똑같습니다.

 

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {

	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine(), " ");
		int n = Integer.parseInt(st.nextToken());
		int m = Integer.parseInt(st.nextToken());
		int ans1 = five(n) - five(n-m) - five(m);
		int ans2 = two(n) - two(n-m) - two(m);
		System.out.println(Math.min(ans1, ans2));
				
	}
	
	static int five(int n) {
		int count = 0;
		while (n>=5) {
			count += n/5;
			n /= 5;
		}
		return count;
	}
	
	static int two(int n) {
		int count = 0;
		while (n>=2) {
			count += n/2;
			n /= 2;
		}
		return count;
	}
}

 

'백준 문제풀이' 카테고리의 다른 글

9093. 단어 뒤집기 (자바, Java)  (0) 2022.11.05
10828. 스택 (자바, Java)  (0) 2022.11.05
1676. 팩토리얼 0의 개수  (0) 2022.10.29
9375. 패션왕 신해빈 (자바, Java)  (0) 2022.10.25
1010. 다리 놓기 (자바, Java)  (0) 2022.10.25