提交时间:2022-07-19 11:53:56
运行 ID: 52335
#include<bits/stdc++.h> #define ll long long #define il inline using namespace std; const int maxn=1024; const int mod=1e9+7; int k,n,m; il int A(int x,int mid,int k){ while(k){ if(k>=mid) x=((n/mid)>>1)-1-(x-((n/mid)>>1)),k=(mid<<1)-k-1; mid>>=1; } return x; } il ll F(int l,int r){ if(l&1){ if(r&1^1) return A(0,n>>1,l)+A(0,n>>1,r)+(r-l-1>>1)*(n-1ll); else return A(0,n>>1,l)+(r-l>>1)*(n-1ll); } if(l&1^1){ if(r&1) return ((r-l+1>>1)&1)?n-1:0; else return A(0,n>>1,r)^(((r-l+1>>1)&1)?n-1:0); } } int main(){ int aa,bb,cc; int l,r,h=0; scanf("%d",&k),n=(1<<k); scanf("%d%d%d",&m,&l,&r); scanf("%d%d%d",&aa,&bb,&cc); for(int i=0;i<m;i++){ h=((l^r^h^F(l,r))+cc)%mod; l=((l^aa^h)%(n+1))%n; r=((r^bb^h)%(n-l))+l; } printf("%d\n",h); return 0; }