자연수 N과 정수 K가 주어졌을 때 이항 계수(n choose k)를 10,007로 나눈 나머지를 구하는 프로그램을 작성하시오.
첫째 줄에 N과 K가 주어진다. (1 ≤ N≤ 1,000, 0 ≤ K ≤ N)
(n choose k)를 10,007로 나눈 나머지를 출력한다.
5 2
10

다음과 같이 있을 때, 10을 곱하고 1로 나누고 9를 곱하고 2를 나누고...를 반복해서 풀이한다.
const fs = require('fs');
let n = fs.readFileSync(0, 'utf-8').toString();
let [N, K] = n.trim().split(' ').map(BigInt);
let result = 1n;
let div = 1n;
K = N - K > K ? K : N - K;
while (K--) {
result *= N;
result /= div;
N = N - 1n;
div = div + 1n;
}
console.log((result % 10007n).toString());
이항 계수 시간초과 없이 풀이하는 방법 항상 까먹었는데 재밌고 쉽게 기억할 수 있는 방법을 찾아서 기록하기 위해!