Coding Problem/백준

[백준] 2004 - 조합 0의 개수

마탁이 2021. 6. 1. 17:54

https://www.acmicpc.net/problem/2004

 

2004번: 조합 0의 개수

첫째 줄에 정수 $n$, $m$ ($0 \le m \le n \le 2,000,000,000$, $n \ne 0$)이 들어온다.

www.acmicpc.net

  • 백준 1676의 팩토리얼 0의 개수를 응용하는 문제라고 생각된다.
  • 2와 5의 개수를 구해야한다. (10을 만들 수 있는 수)
  • 분자의 2나 5의 개수는 증가 시키고, 분모는 개수에서 뺴야한다.
  • 그리고 출력은 2와 5개수 중에서 작은 수를 출력한다.
더보기
# 25, 12 -> 5200300
N, M = map(int, str(input()).split())

cnt5 = 0
cnt2 = 0
num = 2
while True: 
    if(num > N): break
    cnt2 += N // num
    num *= 2

num = 5
while True:
    if(num > N): break
    cnt5 += N // num
    num *= 5
##
num = 2
while True: 
    if(num > M): break
    cnt2 -= M // num
    num *= 2

num = 5
while True:
    if(num > M): break
    cnt5 -= M // num
    num *= 5
##

num = 2
while True: 
    if(num > N-M): break
    cnt2 -= (N-M) // num
    num *= 2

num = 5
while True:
    if(num > N-M): break
    cnt5 -= (N-M) // num
    num *= 5

print(cnt5 if cnt5 < cnt2 else cnt2)

'Coding Problem > 백준' 카테고리의 다른 글

[백준] 2630 - 색종이 만들기  (0) 2021.06.21
[백준] 11050 - 이항계수2  (0) 2021.06.01
[백준] 9375 - 패션왕 신해빈  (0) 2021.05.31
[백준] 5086 - 배수와 약수  (0) 2021.05.31
[백준] 3036 - 링  (0) 2021.05.31