조합의 개수

최대 1000개의 (n, k) 쌍이 주어질 때 각 쌍에 대해 이항계수 C(n, k)를 10^9+7로 나눈 나머지를 구한다.

보통4조합론수학정수론동적 계획법면접 대비아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

원소가 nn개인 집합에서 kk개를 고른 것을 kk-조합이라고 한다.

예를 들어 1부터 5까지의 수로 이루어진 집합에서는 다음과 같은 조합이 나온다.

  • 1-조합(한 번에 1개를 고름): (1), (2), (3), (4), (5)
  • 2-조합(한 번에 2개를 고름): (1, 2), (1, 3), (1, 4), (1, 5), (2, 3), (2, 4), (2, 5), (3, 4), (3, 5), (4, 5)
  • 3-조합(한 번에 3개를 고름): (1, 2, 3), (1, 2, 4), (1, 2, 5), (1, 3, 4), (1, 3, 5), (1, 4, 5), (2, 3, 4), (2, 3, 5), (2, 4, 5), (3, 4, 5)
  • 4-조합(한 번에 4개를 고름): (1, 2, 3, 4), (1, 2, 3, 5), (1, 2, 4, 5), (1, 3, 4, 5), (2, 3, 4, 5)
  • 5-조합(모든 원소를 한 번에 고름): (1, 2, 3, 4, 5)
  • 0-조합(아무 원소도 고르지 않음): ()

원소가 nn개인 집합의 kk-조합의 개수는 다음 식으로 구한다.

(nk)=n(n1)(nk+1)k(k1)1\binom{n}{k} = \frac{n(n-1)\cdots(n-k+1)}{k(k-1)\cdots 1}

위 목록에서 보듯이 (50)=1\binom{5}{0} = 1, (51)=5\binom{5}{1} = 5, (52)=10\binom{5}{2} = 10, (53)=10\binom{5}{3} = 10, (54)=5\binom{5}{4} = 5, (55)=1\binom{5}{5} = 1이다.

여러 개의 (n,k)(n, k) 쌍이 주어질 때 각각에 대해 (nk)\binom{n}{k}를 계산하라.

입력

첫째 줄에 정수 tt가 주어진다. 이어지는 tt개의 줄에는 공백으로 구분된 두 정수 nnkk가 주어진다.

  • 1t10001 \le t \le 1000
  • 1n10001 \le n \le 1000
  • 0kn0 \le k \le n

출력

(n,k)(n, k) 쌍에 대해 원소가 nn개인 집합의 kk-조합의 개수를 10000000071000000007(109+710^9 + 7)로 나눈 나머지를 한 줄에 하나씩, 입력에 주어진 순서대로 출력한다.