def div_number(k, n):
    count = 0
    while(k != 0):
        k = k // n
        count += k
    return count

n, m = list(map(int, input().split()))

div_five = div_number(n, 5) - div_number(m, 5) - div_number(n-m, 5)
div_two = div_number(n, 2) - div_number(m, 2) - div_number(n-m, 2)

print(min(div_five, div_two))

 

'# 코딩 문제 관련 > 파이썬' 카테고리의 다른 글

백준 4949번(python)  (0) 2020.05.02
백준 10773번(python)  (0) 2020.05.02
백준 1676번(python)  (0) 2020.04.27
백준 9375번(python)  (0) 2020.04.20
백준 11050번(python)  (0) 2020.04.19


N = int(input())
print(N//5 + N//25 + N//125)

팩토리얼로 얻을 수 있는 수를 인수 분해 했을때, 0이 늘어나는 순간은 10(2x5)가 곱해지는 순간이다.

따라서 5의 개수를 찾으면 쉽다. 예를 들어, 10!이면 5에서 한번, 10에서 한번 --> 그래서 답이 2

원래는 for-loop를 활용해서 조건식은 5를 계속 곱해주고, for-loop 안에서는 5로 나눠주어 5의 갯수를 찾아야 한다.

하지만 문제에서 주어진 N의 범위(0<N<500)가 크지 않으니 그냥 print 문으로 해결.

125도 넣어줘야하는 이유는 N의 범위가 125를 포함하기 때문. 또, 5를 3번 포함하기 때문.

625는 500 범위 밖이니 제외.

'# 코딩 문제 관련 > 파이썬' 카테고리의 다른 글

백준 10773번(python)  (0) 2020.05.02
백준 2004번(python)  (0) 2020.04.28
백준 9375번(python)  (0) 2020.04.20
백준 11050번(python)  (0) 2020.04.19
백준 3036번(python)  (0) 2020.04.19


- (headgear + 1) * (eyewear + 1)으로 문제 해결
- (옷의 종류 + 1) * (...) * ...

첫 번째 예제의 경우,
(headgear) hat turban x
(eyewear) sunglasses x

x는 해당 종류를 입지 않는 것을 의미함.
모든 경우를 구하면 (3x2)-1, -1은 아무것도 입지 않는 경우 제외

n = int(input())
# test case
for _ in range(n):
    _n = int(input())
    
    # each case
    clothes_type = {}
    for _ in range(_n):
    	# 의류 이름과 종류
        name, type = input().split()
        # 의류 종류를 dict의 key로 사용
        if(type in clothes_type):
            clothes_type[type] += 1
        else:
            clothes_type[type] = 1
    
    case = 1
    # 옷의 종류 + 1
    for key in clothes_type.keys():
        case = case * (clothes_type[key] + 1)
    
    print(case - 1)

'# 코딩 문제 관련 > 파이썬' 카테고리의 다른 글

백준 2004번(python)  (0) 2020.04.28
백준 1676번(python)  (0) 2020.04.27
백준 11050번(python)  (0) 2020.04.19
백준 3036번(python)  (0) 2020.04.19
백준 2981번(python)  (1) 2020.04.18


N, K = list(map(int, input().split()))

up = 1
for i in range(N, N-K, -1):
    up *= i

down = 1
for i in range(1, K+1):
    down *= i

print(up // down)

math.factorial 활용

from math import factorial

N, K = list(map(int, input().split()))

print(factorial(N)//(factorial(K) * factorial(N-K)))

'# 코딩 문제 관련 > 파이썬' 카테고리의 다른 글

백준 1676번(python)  (0) 2020.04.27
백준 9375번(python)  (0) 2020.04.20
백준 3036번(python)  (0) 2020.04.19
백준 2981번(python)  (1) 2020.04.18
백준 2609번(python)  (0) 2020.04.10


def get_gca(a, b):
    if(b > a):
        num_1 = b
        num_2 = a
    else:
        num_1 = a
        num_2 = b
    
    if(num_1 % num_2 == 0):
        return num_2
    
    while(num_1 % num_2):
        gca = num_1 % num_2
        num_1 = num_2
        num_2 = gca
        
    return gca

N = int(input())
ring_radius = list(map(int, input().split()))

for i in ring_radius[1:]:
    gca = get_gca(ring_radius[0], i)
    print(f'{int(ring_radius[0]/gca)}/{int(i/gca)}')

 

'# 코딩 문제 관련 > 파이썬' 카테고리의 다른 글

백준 9375번(python)  (0) 2020.04.20
백준 11050번(python)  (0) 2020.04.19
백준 2981번(python)  (1) 2020.04.18
백준 2609번(python)  (0) 2020.04.10
백준 1037번(python)  (0) 2020.04.09