알고리즘 문제/implementation
백준 2004 조합 0의 개수
gaelim
2022. 9. 12. 17:03
반응형
n 팩토리얼의 값에 5와 2가 몇 개가 들어가있는지 질의하는 문제이다.
그럼 n 팩토리얼에 5, 2가 몇 개 들어가있을 까를 알아야한다.
2를 기준으로, 24! 는 2는 모든 짝수에 들어가있다. 12개
그리고, 4, 8, 12, 16, 20, 24 에 추가적으로 2가 들어가있다. (4 = 22, 8= 222, 12 = 223, 16=224, 20 = 225, 24 = 226) 이 때, 8, 16, 24는 추가적으로 들어가있다. 문제전략은 계속 base를 나눠가면서 몇 개의 2가 남아있는지 세는 것이다.
24 / 2 = 12 <=> (21, .... 212)
12 / 2 = 6 <=> ( 221, .... 226)
6 / 2 = 3 <=> ( 2221, ... 2223)
3 / 2 = 1 <=> ( 2222*1 )
^^..
def get_cnt(base, val):
ans = 0
while val >= base:
ans += val//base
val //= base
return ans
n, m= list(map(int,input().split()))
ans_2 = get_cnt(2, n) - get_cnt(2, m) - get_cnt(2, n-m)
ans_5 = get_cnt(5, n) - get_cnt(5, m) - get_cnt(5, n-m)
print(min(ans_2, ans_5))
반응형