![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
il void fwt(int *s,int tp){ for(int i=0;i<t;i++)if(i<v[i])swap(s[i],s[v[i]]); for(int i=1;i<t;i<<=1){ for(int j=0;j<t;j+=i<<1){ for(int k=0;k<i;k++){ int A=s[j+k],B=s[i+j+k]; s[j+k]=mu(A,B);s[i+j+k]=mu(A,p-B); if(tp==-1)s[k+j]=1ll*s[j+k]*inv2%p,s[i+j+k]=1ll*s[i+j+k]*inv2%p; } } } }
与和或的日后填坑