Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
52326 | wssdr | 折纸 | C++ | 运行出错 | 30 | 2 MS | 524 KB | 912 | 2022-07-19 11:52:59 |
#include<bits/stdc++.h> #define ll long long using namespace std; ll n,m,x[2000]={0,1,2},tmp[2000],h[10005],l[10005],r[10005],a,b,c; inline ll F(ll s,ll t){ ll res(0); if(s&1){ res=x[s+1]; for(int i(s+2);i<=t+1;i+=2) res+=(x[i]^(i<=t?x[i+1]:0)); } else for(int i(s+1);i<=t+1;i+=2) res^=(x[i]+(i<=t?x[i+1]:0)); return res; } int main(){ scanf("%lld",&n); for(int i(2),k(2);i<=n;++i,k<<=1){ for(int j(1);j<=k;++j) tmp[j]=x[j]; for(int j(1);j<=k;++j) x[j]=(tmp[j]<<1)-(j&1); for(int j(1);j<=k;++j) x[j+k]=(tmp[j]<<1)+(j&1?1:-2); } n=(1ll<<n);for(int i(1);i<=n;++i) --x[i]; scanf("%lld%lld%lld",&m,&l[0],&r[0]); scanf("%lld%lld%lld",&a,&b,&c);c%=1000000007ll; for(int i(1);i<=m;++i){ h[i]=((l[i-1]^r[i-1]^h[i-1]^F(l[i-1],r[i-1]))+c)%1000000007ll; l[i]=((l[i-1]^a^h[i])%(n+1ll))%n; r[i]=((r[i-1]^b^h[i])%(n-l[i]))+l[i]; } printf("%lld\n",h[m]); return 0; }