异或规律:

AND, OR and square sum - 洛谷
组合数板子
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int mod=1e9+7;
const int N=1e5+10;
ll f[N],invf[N];
ll pows(ll a,ll n)
{
ll ans=1;
while(n)
{
if(n&1)
{
ans=ans*a%mod;
}
a=a*a%mod;
n>>=1;
}
return ans;
}
void init()
{
f[1]=1;
invf[1]=pows(f[1],mod-2);
for(int i=2; i<N; i++)
{
f[i]=f[i-1]*i%mod;
invf[i]=pows(f[i],mod-2);
}
}
ll c(ll a,ll b)
{
return f[a]*invf[a-b]%mod*invf[b]%mod;
}
int main()
{
init();
int n;
cin>>n;
while(n--)
{
ll a,b;
cin>>a>>b;
if(a==b)
{
cout<<1<<endl;
}
else
cout<<c(a,b)<<endl;
}
return 0;
}