#include <iostream> #include <algorithm> #include <cstring> using namespace std; const int MAX=1e6+10; using ll=long long; const int mod=1e9+7; long long fact[MAX],invfact[MAX]; ll ksm(ll a, ll b, int mod) { ll res = 1 % mod; while (b) { if (b & 1) res = res * a % mod; a = a * a % mod; b >>= 1; } return res; } ll inv(ll x) { return ksm(x, mod - 2, mod) % mod; } void init(){ fact[0]=invfact[0]=1; for(int i=1;i<=MAX;i++) { fact[i]=(fact[i-1]*i%mod); invfact[i]=(invfact[i-1]*inv(i))%mod; } } int main() { std::ios::sync_with_stdio(false);cin.tie(0);cout.tie(0); init(); int n; cin>>n; while(n--) { int a,b; cin>>a>>b; cout<<(fact[a]*invfact[b]%mod*invfact[a-b]%mod)%mod<<"\n";//注意%mod 不然会爆 } }
09-26
404