传送门

这玩意儿太骚了……

参考了yyb巨佬

 //minamoto
#include<iostream>
#include<cstdio>
#define ll long long
#define add(x,y) ((x+=y)>=mod?x-=mod:x)
using namespace std;
#define getc() (p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,stdin),p1==p2)?EOF:*p1++)
char buf[<<],*p1=buf,*p2=buf;
inline int read(){
#define num ch-'0'
char ch;bool flag=;int res;
while(!isdigit(ch=getc()))
(ch=='-')&&(flag=true);
for(res=num;isdigit(ch=getc());res=res*+num);
(flag)&&(res=-res);
#undef num
return res;
}
char sr[<<],z[];int C=-,Z;
inline void Ot(){fwrite(sr,,C+,stdout),C=-;}
inline void print(int x){
if(C><<)Ot();if(x<)sr[++C]=,x=-x;
while(z[++Z]=x%+,x/=);
while(sr[++C]=z[Z],--Z);sr[++C]=' ';
}
const int N=(<<)+,mod=,inv=;
int n,len,A[N],B[N],R[N];
void FWT_or(int *A,int type){
for(int i=;i<len;i<<=)
for(int p=i<<,j=;j<len;j+=p)
for(int k=;k<i;++k)
add(A[i+j+k],type==?A[j+k]:mod-A[j+k]);
}
void FWT_and(int *A,int type){
for(int i=;i<len;i<<=)
for(int p=i<<,j=;j<len;j+=p)
for(int k=;k<i;++k)
add(A[j+k],type==?A[i+j+k]:mod-A[i+j+k]);
}
void FWT_xor(int *A,int type){
for(int i=;i<len;i<<=)
for(int p=i<<,j=;j<len;j+=p)
for(int k=;k<i;++k){
int x=A[j+k],y=A[i+j+k];
A[j+k]=(x+y)%mod,A[i+j+k]=(x+mod-y)%mod;
if(type==-) A[j+k]=1ll*A[j+k]*inv%mod,A[i+j+k]=1ll*A[i+j+k]*inv%mod;
}
}
int main(){
// freopen("testdata.in","r",stdin);
n=read(),len=<<n;
for(int i=;i<len;++i) A[i]=read();
for(int i=;i<len;++i) B[i]=read(); FWT_or(A,),FWT_or(B,);
for(int i=;i<len;++i) R[i]=1ll*A[i]*B[i]%mod;
FWT_or(A,-),FWT_or(B,-),FWT_or(R,-);
for(int i=;i<len;++i) print(R[i]);sr[++C]='\n'; FWT_and(A,),FWT_and(B,);
for(int i=;i<len;++i) R[i]=1ll*A[i]*B[i]%mod;
FWT_and(A,-),FWT_and(B,-),FWT_and(R,-);
for(int i=;i<len;++i) print(R[i]);sr[++C]='\n'; FWT_xor(A,),FWT_xor(B,);
for(int i=;i<len;++i) R[i]=1ll*A[i]*B[i]%mod;
FWT_xor(R,-);
for(int i=;i<len;++i) print(R[i]);sr[++C]='\n'; Ot();
return ;
}

最新文章

  1. js整理
  2. 2016中国大学生程序设计竞赛 - 网络选拔赛 J. Alice and Bob
  3. Hadoop深入浅出实战经典–第02讲
  4. 【转】 Newtonsoft.Json高级用法
  5. centos7下彻底卸载LibreOffice方法【转载】
  6. 如何根据iframe内嵌页面调整iframe高宽续篇
  7. weblogic11g 节点管理器 nodemanager
  8. java基本类型作为成员变量时的初始值
  9. Java 7源码分析第13篇 - 字节输入输出流(1)
  10. oracle如何修改字段类型(oracle总体知识2)
  11. python语言学习9——使用list和tuple
  12. 【百度地图API】情人节求爱大作战——添加标注功能
  13. Linux 监控文件事件
  14. Redis的发布订阅及.NET客户端实现
  15. 我眼中的微信小程序
  16. 关于ES5的indexof()和ES7的includes()的区别
  17. selenium中隐式等待和显示等待的区别
  18. bzoj3678 Katu Puzzle
  19. Burpsuite 之intruder
  20. HDFS的Java客户端编写

热门文章

  1. Aspose.cells 读取Excel表中的图片问题
  2. ssh key 生成
  3. Sleeping Beauty,摘自iOS应用Snow White and more stories
  4. FireMonkey下的WndProc实现
  5. apk下载与安装
  6. linux 启动引导器 grub,单用户模式:
  7. Ubuntu环境下配置Android Studio【转】
  8. jquery特效(4)—轮播图②(定时自动轮播)
  9. Dubbo与Zookeeper、SpringMVC整合与使用(干货-理论放一遍。。。还未完结!)
  10. zabbix数据库创建初始化