출처: https://meyouus.tistory.com/64 [정보 공유 - For Me For You For Us]
본문으로 바로가기

전 포스팅에서 풀었던 이항 계수 1 문제와 비슷하나, 다른 방식으로 풀어야 했다:

import sys

a, b = map(int, sys.stdin.readline().split())
N = 1
K = 1

for i in range(b):
    N *= a-i
    K *= b-i

print(int(N/K)%10007)

처음에는 이렇게 풀었더니 틀린 답이 나왔다. 이유는 곰곰히 생각해보니, 문제에서 주어졌듯이 N, K 값이 매우 커질 수 있는데, 그렇게 된다면 한번에 K로 나눌 때 정확하지 않은 값이 나올 수 있을 수 있다고 생각했기 때문이다. 따라서, 천천히 한 숫자씩 나누어주면 될 듯 했다:


정답으로 제출한 풀이

import sys

a, b = map(int, sys.stdin.readline().split())
N = 1
K = 1

for i in range(b):
    N *= a-i

for i in range(b):
    N = N//(b-i)

print(N%10007)

이렇게 하나씩 나누어주는 방식으로 진행을 하고 마지막에 10007의 나머지 값을 구하는 방식으로 진행했다.