문제
링크
풀이
#include <iostream>
#include <vector>
#define MOD 1000000007
using namespace std;
long long power(long long base, long long exp) {
if (exp == 0) return 1;
if (exp == 1) return base % MOD;
long long half = power(base, exp / 2);
if (exp % 2 == 0) return (half * half) % MOD;
return (((half * half) % MOD) * base) % MOD;
}
void solve(vector<long long> &fac) {
int n, k;
cin >> n >> k;
cout << (fac[n] * power((fac[k] * fac[n-k]) % MOD, MOD - 2)) % MOD << "\n";
}
int main(void) {
ios::sync_with_stdio(false);
cin.tie(nullptr);
// precompute
vector<long long> fac(4000001, 1);
for (int i=1; i<=4000000; i++) {
fac[i] = (fac[i-1] * i) % MOD;
}
int m;
cin >> m;
while (m--) {
solve(fac);
}
return 0;
}