Description
自底向上模拟,原地操作以节省空间
#include<bits/stdc++.h> unsigned n,a,b,c,v[1055555],mx,ans=0; int main(){ scanf("%u%u%u%u%u",&n,v,&a,&b,&c); mx=1<<n; for(int i=1;i<mx;++i)v[i]=v[i-1]*a+b; for(int i=1;i<mx;i<<=1){ for(int j=0;j<mx;j+=i<<1){ unsigned*A=v+j,*B=A+i; for(int k=0;k<i;++k){ int x=A[k],y=B[k]; A[k]=x|y,B[k]=x&y; } } } for(int i=mx-1;i>=0;--i)ans=ans*c+v[i]; printf("%u",ans); return 0; }