提交时间:2022-07-19 12:06:21

运行 ID: 52396

#include<bits/stdc++.h> #define I using #define love namespace #define Elaina std #define ll long long I love Elaina; const ll mod=1e9+7; ll read(){ ll x=0,f=1; char ch=getchar(); while(ch<'0'||ch>'9'){ if(ch=='-')f=-1; ch=getchar(); } while(ch>='0'&&ch<='9'){ x=(x<<3)+(x<<1)+ch-'0'; ch=getchar(); } return x*f; } ll n,k,m,l,r,h,a,b,c,res,qwq,bit1[40],bit2[40]; ll calc(ll x){ qwq=0; for(int i=k-1;i>=0;i--){ if(!x)break; if(!(x&bit1[i]))continue; x^=bit2[i+1],qwq^=bit2[k-i]; } return qwq; } ll F(ll L,ll R){ res=0; if(L&1){ res=1ll*((R-L)/2)*(n-1); res+=calc(L); if(!(R&1))res+=calc(R); } else{ if(((R-L+1)/2)&1)res=n-1; if(!(R&1))res^=calc(R); } return res; } int main(){ k=read(),m=read(),l=read(),r=read(),a=read(),b=read(),c=read(); n=(1ll<<k),bit1[0]=1; for(int i=1;i<=35;i++)bit1[i]=bit1[i-1]<<1,bit2[i]=(bit2[i-1]<<1)|1; while(m--){ h=((l^r^h^F(l,r))%mod+c)%mod; l=((l^a^h)%(n+1))%n; r=(r^b^h)%(n-l)+l; } printf("%lld",h); return 0; }