본문 바로가기

Coding test

[백준/11401/파이썬]


소스코드

def power(a, b):
    if b == 0:
        return 1
    if b % 2: 
        return (power(a, b//2) ** 2 * a) % p
    else:
        return (power(a, b//2) ** 2) % p

p = 1000000007
N, K = map(int, input().split())

fact = [1 for _ in range(N+1)]

for i in range(2, N+1):
    fact[i] = fact[i-1] * i % p

A = fact[N]
B = (fact[N-K] * fact[K]) % p
print((A % p) * (power(B, p-2) % p) % p )

알고리즘

페르마의 소정리를 이용하여 푸는 문제였다.

페르마의 소정리는 다른 블로그에 잘 적혀있으니 그걸 보면 될 것같다.