#define _CRT_SECURE_NO_WARNINGS
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll mod=1e9+7;
ll dp[200050][2];
ll pw[200050];
void init()
{
pw[0]=1;
for(int i=1;i<=200000;i++)pw[i]=pw[i-1]*2%mod;
}
void solve(){
ll n,k;
scanf("%lld %lld",&n,&k);
dp[k][1]=0;//dp[k][1]=1;
dp[k][0]=1;
if(n&1)for(int i=k-1;i>=0;i--)//i--
{
dp[i][1]=pw[n]*dp[i+1][1]%mod;
dp[i][0]=(pw[n-1]+1)*dp[i+1][0]%mod;
}
else for(int i=k-1;i>=0;i--)
{
dp[i][1]=(pw[n]*dp[i+1][1]+dp[i+1][0])%mod;
dp[i][0]=(pw[n-1]-1)*dp[i+1][0]%mod;
}
printf("%lld\n",(dp[0][1]+dp[0][0])%mod);
}
int main()
{
init();
int T;
scanf("%d",&T);
while(T--)solve();
return 0;
}
CF 1157 C. Moamen and XOR(dp)
最新推荐文章于 2024-11-06 19:55:44 发布