求組合數2
阿新 • • 發佈:2021-07-12
求組合數2
給定 n 組詢問,每組詢問給定兩個整數 a,b,請你輸出 Cbamod(109+7) 的值。
輸入格式
第一行包含整數 n。
接下來 n 行,每行包含一組 a 和 b。
輸出格式
共 n 行,每行輸出一個詢問的解。
資料範圍
1≤n≤10000
1≤b≤a≤105
輸入樣例:
3
3 1
5 3
2 2
輸出樣例:
3
10
1
#include <iostream> #include <algorithm> using namespace std; typedef long long LL; const int N = 100010, mod = 1e9 + 7; int fact[N], infact[N]; int qmi(int a, int k, int p) { int res = 1; while (k) { if (k & 1) { res = (LL)res * a % p; } a = (LL)a * a % p; k >>= 1; } return res; } int main() { fact[0] = infact[0] = 1; for (int i = 1; i < N; i++) { fact[i] = (LL)fact[i - 1] * i % mod; infact[i] = (LL)infact[i - 1] * qmi(i, mod - 2, mod) % mod; } int n; cin >> n; while (n--) { int a, b; cin >> a >> b; cout << (LL)fact[a] * infact[b] % mod * infact[a - b] % mod << endl; } return 0; }