Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
52521 | MattL | 折纸 | C++ | 运行出错 | 30 | 2 MS | 2320 KB | 862 | 2022-07-19 12:31:37 |
#include <bits/stdc++.h> using namespace std; const int M=1e6+6,mod=1e9+7; int n,m,aa,bb,cc,k,a[M],l,r,h; int f(int q,int w) { int ans=0; if(q&1) { ans=a[q+1]+(n-1)*((w-q)/2); if(w%2==0)ans+=a[w+1]; } else{ ans=(((w-q+1)/2)%2)?n-1:0; if(w%2==0)ans^=a[w+1]; } return ans; } int main() { ios::sync_with_stdio(false); cin.tie(0),cout.tie(0); cin>>k>>m>>l>>r>>aa>>bb>>cc; n=1<<k; a[1]=0; for(int i=1;i<=k;i++) { for(int o=1;o<=(1<<(i-1));o++) a[o]=a[(1<<i)-o+1]=a[o]<<1; for(int o=1;o<=(1<<i);o++) if((o&1)==0) a[o]++; } while(m--) { h=((l^r^h^f(l,r))+cc)%mod; l=((l^aa^h)%(n+1))%n; r=((r^bb^h)%(n-l))+l; } cout<<h<<endl; return 0; }