给定n组询问,每组询问给定两个整数a,b,请你输出Cba mod (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<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll N=1e5+10,mod=1e9+7;
ll shang[N],xia[N];
ll qsm(ll a,ll k,ll p)
{
ll res=1;
while(k)
{
if(k&1)res=res*a%p;
k>>=1;
a=a*a%p;
}
return res;
}
int main()
{
shang[0]=1;xia[0]=1; //预处理所有的上下的积;
for(ll i=1;i<N;i++)
{
shang[i]=shang[i-1]*i%mod;
xia[i]=xia[i-1]*qsm(i,mod-2,mod)%mod;
}
ll k;cin>>k;
while (k--)
{
ll a,b;
cin>>a>>b;
cout<<shang[a]*xia[b]%mod*xia[a-b]%mod<<endl;
//先mod一次防止爆范围
}
}