Quick pow for #737(div2) C. Moamen and XOR

Revision en2, by zzxdd, 2021-08-26 07:46:25
#include 
using namespace std;
long long t,n,k,ans,lg,eq;
const long long p=1000000007;
long long poww(long long a,long long x,long long mod){
        long long ans=1,base=a;
	while(x>0){
		if(x%2==1)
			ans=(ans*base)%mod;
			base=(base*base)%mod;
  		x/=2;
  	}
  	return ans;
}
int main()
{
	cin>>t;
	while(t--){
		cin>>n>>k;
		lg=0;
		eq=1;
		for(int i=1;i<=k;i++){
			lg=(lg*poww(2,n,p)%p+eq*((n+1)%2))%p;
			eq=eq*(p+poww(2,n-1,p)+(n%2?1:-1))%p;
		}
		ans=(lg+eq)%p;
		cout<<

History

 
 
 
 
Revisions
 
 
  Rev. Lang. By When Δ Comment
en3 English zzxdd 2021-08-26 07:50:37 563
en2 English zzxdd 2021-08-26 07:46:25 15
en1 English zzxdd 2021-08-26 07:45:11 598 Initial revision (published)