
Nim
发布日期:2021-05-06 03:50:33
浏览次数:20
分类:原创文章
本文共 1289 字,大约阅读时间需要 4 分钟。
FWT模板
还没搞懂And..
那就先把Or和Xor写一下好了
#include<cstdio>#include<iostream>#include<cstring>#include<cstdlib>using namespace std;const int P=1000000007;const int N=66000;int n,m,k,i,j,a[N];bool v[N];inline void UFWT(){ for(int d=1;d<k;d<<=1) for(int m=d<<1,i=0;i<k;i+=m) for(int j=0;j<d;j++) { int x=a[i+j],y=a[i+j+d]; a[i+j]=500000004ll*(x+y)%P,a[i+j+d]=500000004ll*(x-y+P)%P;//Xor // a[i+j]=a[i+j],a[i+j+d]=(a[i+j]+a[i+j+d])%P; Or }}inline void FWT(){ for(int d=1;d<k;d<<=1) for(int m=d<<1,i=0;i<k;i+=m) for(int j=0;j<d;j++) { int x=a[i+j],y=a[i+j+d]; a[i+j]=(x+y)%P,a[i+j+d]=(x-y+P)%P;//Xor // a[i+j]=a[i+j],a[i+j+d]=(P+a[i+j]-a[i+j+d])%P; Or }}inline int pow(int a,int b){ int t=1;for(int tt=b;tt;tt>>=1,a=a*1ll*a%P)if(tt&1)t=t*1ll*a%P;return t;}int main(){ for(i=2;i<N;i++)if(!v[i])for(j=i+i;j<N;j+=i)v[j]=1; while(scanf("%d%d",&n,&m)==2) { for(k=1;k<=m;k<<=1); for(i=0;i<k;i++)a[i]=0; for(i=2;i<k&&i<=m;i++)if(!v[i])a[i]=1; FWT(); for(i=0;i<k;i++)a[i]=pow(a[i],n); UFWT(); printf("%d\n",a[0]); } return 0;}
发表评论
最新留言
路过,博主的博客真漂亮。。
[***.116.15.85]2025年04月03日 20时23分12秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
动态代理与SpringAOP
2019-03-04
MySql索引及使用、实现的数据结构
2019-03-04
Why Did the Cow Cross the Road I P
2019-03-04
小D的剧场
2019-03-04
思维题
2019-03-04
FBI树
2019-03-04
局域网安全之ARP攻击
2019-03-04
pikachu之文件包含漏洞
2019-03-04
【DVWA】XSS-----------------high+各级别总结
2019-03-04
初探SSRF漏洞
2019-03-04
项目实训(树莓派)(一)树莓派4B简介与安装
2019-03-04
四级单词部分(整理)
2019-03-04
JavaFX\FXML\CSS的简单使用
2019-03-04
使用定时任务crontab命令
2019-03-04
【JavaFX】ListView
2019-03-04
不同进制之间的转换
2019-03-04
【POJ 1148】Utopia Divided
2019-03-04
【ybt高效进阶3-4-1】【luogu P3387】有向图缩点 / 【模板】缩点
2019-03-04
【python】理解列表推导式以及列表推导式嵌套
2019-03-04
【DG特长生2019 T4】【SSL 2892】文档恢复
2019-03-04