Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
52324 | 野兽先辈——田所浩二 | 折纸 | C++ | 通过 | 100 | 3686 MS | 248 KB | 764 | 2022-07-19 11:52:56 |
#include<cstdio> #include<iostream> #define ll long long using namespace std; int k,n,m,a,b,c,l,r,h,mod=1e9+7; ll F; ll sum(int x) { ll res=0; int tag=x&1; for(int i=1;i<=k;i++) res=(res<<1)|((x&1)^((x>>i)&1)); return res; } ll calc() { if(l&1) { if(r&1) return sum(l)+1ll*(n-1)*((r-l)>>1); else return sum(l)+sum(r)+1ll*(n-1)*((r-l-1)>>1); } else { if(r&1) return ((r-l+1)>>1)&1 ? n-1:0; else return ((r-l)>>1)&1 ? sum(r+1):sum(r); } } int main() { scanf("%d%d%d%d%d%d%d",&k,&m,&l,&r,&a,&b,&c); n=1<<k; for(int i=1;i<=m;i++) { F=calc(); h=((l^r^h^F)+c)%mod; l=(l^a^h)%(n+1)%n; r=(r^b^h)%(n-l)+l; } printf("%d",h); return 0; } /* 30 5000000 4 5 273035200 65685838 991992535 */