====== 이항 계수 5 ====== ===== 풀이 ===== * [[ps:problems:boj:11402|이항 계수 4]]와 마찬가지로 이항계수를 일반적이지 않은 모듈러스로 나눈 나머지를 구하는 문제이다. 이항 계수 4에서는 모듈러스가 그나마 소수였지만, 이번에는 합성수이다. * 이것에 대한 풀이는 [[ps:이항 계수#모듈러스가 임의의 합성수일 때|이항 계수를 임의의 합성수로 나눈 나머지]] 참고. 거기서 설명한 대로 시간 복잡도도 O(nloglogn)이다 ===== 코드 ===== """Solution code for "BOJ 11439. 이항 계수 5". - Problem link: https://www.acmicpc.net/problem/11439 - Solution link: http://www.teferi.net/ps/problems/boj/11439 """ from teflib import numtheory def main(): N, K, M = [int(x) for x in input().split()] if K > N - K: K = N - K ans = 1 for p in numtheory.prime_list(N): prime_pow = p e = 0 while prime_pow <= N: e += (N // prime_pow) - (K // prime_pow) - ((N - K) // prime_pow) prime_pow *= p ans = ans * pow(p, e, M) % M print(ans) if __name__ == '__main__': main() * Dependency: [[:ps:teflib:numtheory#prime_list|teflib.numtheory#prime_list]] {{tag>BOJ ps:problems:boj:플래티넘_4}}