题目连接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=27095#problem/C
参考博客:http://blog.csdn.net/shankeliupo/article/details/9455815
AC代码:
#include<stdio.h>
#include<string.h>
#include<algorithm>
#define mod 1000000007
long long T;
long long power(int n){
long long ans;
if(n==0) return 1;
if(n==1) return 2;
ans=power(n/2);
if(n%2==0) return ans*ans%mod;
if(n%2!=0) return ans*ans*2%mod;
}
int main(){
int n,k;
while(~scanf("%d",&T)){
for(int i=0;i<T;i++){
scanf("%d %d",&n,&k);
n=n-k+1;
if(n<=0) {printf("0\n");continue;}
if(n==1){printf("1\n");continue;}
long long t;
t=(power(n-1)%mod+(n-2)*power(n-3)%mod);
t=t%mod;
printf("%d\n",t);
}
}
return 0;
}