#include<iostream>
#include<cstdio>
using namespace std;
long long Mod_pow(long long a, long long b, long long p)
{
a %= p;
long long ans = 1;
while(b)
{
if (b&1)ans = ans*a%p;
a = a*a%p;
b >>= 1;
}
return ans;
}
int main()
{
long long n,i,t,res,mod;
mod=1e9+7;
scanf("%lld",&t);
while(t--&&scanf("%lld %lld",&n,&i)!=EOF)
{
if(n==i)
printf("1\n");
else if(n==i+1)
printf("2\n");
else if(n<i)
printf("0\n");
else
{
res=2*Mod_pow(2,(n-i-1),mod)%mod;
res=(res+(n-i-1)*Mod_pow(2,(n-i-2),mod))%mod;
printf("%lld\n",res);
}
}
return 0;
}
hdu 4602 组合数学
最新推荐文章于 2018-01-28 19:55:23 发布