Algorithm Problem/Python

[python] λ°±μ€€ - 2004. μ‘°ν•© 0의 개수

deo2kim 2020. 10. 17. 08:06
λ°˜μ‘ν˜•

πŸ€”λ¬Έμ œ ν•΄κ²°

  • S2 | μˆ˜ν•™

  • μ§„μ§œ νŒ©ν† λ¦¬μ–Όλ‘œ κ΅¬ν•΄μ„œ 문제λ₯Ό ν•΄κ²°ν•˜κ²Œ 되면 μ‹œκ°„μ΄ˆκ³Ό λ°œμƒ
  • λμžλ¦¬κ°€ 0μ΄λΌλŠ” 것은 10의 배수
  • 10은 2와 5둜 κ΅¬μ„±λ˜μ–΄ 있음
  • 2와 5 짝이 λ§žμ•„μ•Ό 10이 λ˜λ―€λ‘œ 2의 κ°œμˆ˜μ™€ 5의 κ°œμˆ˜μ€‘ 더 μž‘μ€κ²Œ 10의 κ°œμˆ˜μ΄λ‹€.

 

πŸ’»μ†ŒμŠ€ μ½”λ“œ

 N, M = map(int, input().split())


# μ§„μ§œ νŒ©ν† λ¦¬μ–Όλ‘œ κ΅¬ν•΄μ„œ 문제λ₯Ό ν•΄κ²°ν•˜κ²Œ 되면 μ‹œκ°„μ΄ˆκ³Ό λ°œμƒ
# λμžλ¦¬κ°€ 0μ΄λΌλŠ” 것은 10의 배수
# 10은 2와 5둜 κ΅¬μ„±λ˜μ–΄ 있음
# 2와 5 짝이 λ§žμ•„μ•Ό 10이 λ˜λ―€λ‘œ 2의 κ°œμˆ˜μ™€ 5의 κ°œμˆ˜μ€‘ 더 μž‘μ€κ²Œ 10의 κ°œμˆ˜μ΄λ‹€.

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


five_count = count_number(N, 5) - count_number(M, 5) - count_number(N - M, 5)
two_count = count_number(N, 2) - count_number(M, 2) - count_number(N - M, 2)

answer = min(five_count, two_count)
print(answer)

 

πŸ“•λ¬Έμ œ 확인

좜처: BACKJOON ONLINE JUDGE

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

 

2004번: μ‘°ν•© 0의 개수

첫째 쀄에 μ •μˆ˜ n, m(0≤m≤n≤2,000,000,000, n!=0)이 λ“€μ–΄μ˜¨λ‹€.

www.acmicpc.net

 

λ°˜μ‘ν˜•