티스토리 뷰

반응형

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 <=> (2
1, .... 212)
12 / 2 = 6 <=> ( 2
21, .... 226)
6 / 2 = 3 <=> ( 2
221, ... 2223)
3 / 2 = 1 <=> ( 2
222*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))
반응형