[수학] [BJ2004] 조합 0의 개수
✏️ 𝗔𝗹𝗴𝗼𝗿𝗶𝘁𝗵𝗺/백준 알고리즘

[수학] [BJ2004] 조합 0의 개수

코드 플러스

조합 0의 개수

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

개노답 삼형제

◾ 평소 같은 방법으로 풀면 위와 같은 재밌는 결과를 볼 수 있다.

import sys

N, M = map(int, sys.stdin.readline().split())


def factorial(num, v):
    ans = 0

    i = v
    while i <= num:
        ans += num // i
        i *= v

    return ans


res1, res2 = 0, 0
res1 += factorial(N, 2)
res1 -= factorial(N - M, 2)
res1 -= factorial(M, 2)

res2 += factorial(N, 5)
res2 -= factorial(N - M, 5)
res2 -= factorial(M, 5)

print(min(res1, res2))

◾ 끝자리에 0이 몇개가 있는지 알아내는 문제

◾ 끝자리에 0이 있으려면 소인수분해 했을 때 2 x 5가 있어야 한다.

◾ 즉, 10이 있어야 한다.

◾ N! 을 소인수분해를 했을 때 2와 5가 몇 개가 나오는지 알아야 한다.

 

 

 

 

 

 

 

 

# 코드 플러스 백준 2004 조합 0의 개수 파이썬 python


 

728x90