문제 분류 수업 진도 대회 채점현황 순위 질문게시판
게임
스도쿠 타이핑 리듬 타자게임 타이핑 테트리스 타이핑 인베이더 타이핑 지뢰찾기 8192 공룡게임 타이핑 플래피버드 랭킹
로그인

8058 : 이항 계수 쿼리

•시간제한: 3.000 S •메모리제한: 256 MB •제출: 0 •통과: 0 •만든사람: suakii

8058 : 이항 계수 쿼리

시간 3.000s · 메모리 256MB · 제출 0 · 정답 0

문제 설명

$n$개의 쿼리가 주어집니다. 각 쿼리마다 두 정수 $a$와 $b$가 주어질 때, 이항 계수 $\binom{a}{b} \pmod{10^9+7}$의 값을 구하는 프로그램을 작성하십시오.



[제약 조건]
• $1 \le n \le 100{,}000$
• $0 \le b \le a \le 1{,}000{,}000$

입력 설명

첫째 줄에 쿼리의 개수 $n$이 주어집니다. ($1 \le n \le 100{,}000$)
다음 $n$개의 줄에 걸쳐 두 정수 $a, b$가 공백으로 구분되어 주어집니다. ($0 \le b \le a \le 1{,}000{,}000$)

출력 설명

각 쿼리에 대해 $\binom{a}{b} \pmod{10^9+7}$의 결과를 한 줄에 하나씩 출력합니다.

입력 예시
COPY
복사되었습니다!

3
5 3
10 2
15 15

출력 예시
COPY
복사되었습니다!

10
45
1

도움

$\binom{a}{b} = \frac{a!}{b!(a-b)!} \pmod p$ 공식을 사용합니다. 팩토리얼($a!$) 배열과 팩토리얼의 모듈러 곱셈 역원 배열을 미리 $O(MAX)$에 구한 뒤, 각 쿼리를 $O(1)$에 계산하여 전체 시간 복잡도 $O(MAX + n)$에 해결할 수 있습니다.

출처/분류

NOTICE  —  BFStudy OJ 정보샘
애들아, 문제 많이 풀고 게임 잠깐 하는거지?
— 정보샘