출처: [백준] 11401번 이항 계수3
문제
자연수 N과 정수 K가 주어졌을 때 이항 계수를 1,000,000,007로 나눈 나머지를 구하는 프로그램을 작성하시오.
입력
첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 4,000,000, 0 ≤ K ≤ N)
출력
를 1,000,000,007로 나눈 나머지를 출력한다.
예제 입력 1
예제 출력 1
힌트
출처
알고리즘 분류
시간 제한
풀이
소스코드 1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| import sys
input = sys.stdin.readline
N, K = map(int, input().split()) mod = 1000000007
def power(a, b): if b == 0: return 1 else: if b % 2 == 0: return (power(a, b // 2) ** 2) % mod else: return (power(a, b // 2) ** 2 * a) % mod
fact = [1 for _ in range(N + 1)]
for i in range(2, N + 1): fact[i] = fact[i - 1] * i % mod
child = fact[N] parent = (fact[K] * fact[N - K]) % mod
print((child % mod) * (power(parent, mod - 2) % mod) % mod)
|