ps | |
---|---|
링크 | acmicpc.net/… |
출처 | BOJ |
문제 번호 | 11439 |
문제명 | 이항 계수 5 |
레벨 | 플래티넘 4 |
분류 |
수학, 정수론 |
시간복잡도 | O(nloglogn) |
인풋사이즈 | n <= 4*10^6 |
사용한 언어 | Python |
제출기록 | 66524KB / 560ms |
최고기록 | 560ms |
해결날짜 | 2021/01/24 |
"""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()