재밌는 아이디어 문제 - 조합 0의 개수(실버2)
- https://www.acmicpc.net/problem/2004
- 아이디어 문제
- 1~ N 까지 k를 약수로 갖는 수는 N//k 개
- 저렇게 세면 k^2 같은거 k가 2개있는걸 셀 수 없으니 k를 k^2, k^3 으로 증가시키면서 갯수를 다 셈
- 만약 수를 다 곱하고 10으로 나누면서 계산을 할 경우 python 이외의 다른 언어는 자료값 초과의 수가 저장되서 에러
- for문으로 n까지 순서대로 소인수분해해서 2와 5의 갯수를 센다면 시간초과
N, M = map(int, input().split())
def func(N, k) : # N!의 k의 약수 갯수 구하기
cnt =0
divider = k
while divider <= N :
cnt += N//divider
divider *= k
return cnt
# nCm 의 2의 갯수
cnt2_N = func(N,2)
cnt2_M = func(M,2)
cnt2_NM = func(N-M,2)
# nCm 의 5의 갯수
cnt5_N = func(N,5)
cnt5_M = func(M,5)
cnt5_NM = func(N-M,5)
# 10 은 2와 5로 이루어져있기 때문에 min값
result = min(cnt2_N-cnt2_M-cnt2_NM, cnt5_N-cnt5_M-cnt5_NM)
print(result)
Author And Source
이 문제에 관하여(재밌는 아이디어 문제 - 조합 0의 개수(실버2)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@swhan9404/재밌는-아이디어-문제-조합-0의-개수실버2저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)