【题目分析】

位运算下的卷积问题。

FWT直接做。

但还是不太民白,发明者要承担泽任的。

【代码】

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
#define F(i,j,k) for (int i=j;i<=k;++i)
#define D(i,j,k) for (int i=j;i>=k;--i)
#define ll long long
#define maxn 100005
int pr[maxn],ispr[maxn],top,n,m,a[maxn],inv,len;
const int md=1e9+7;
void FWT(int l,int r)
{
if (l==r) return ;
int mid=l+r>>1;
FWT(l,mid); FWT(mid+1,r);
for (int i=l,j=mid+1;i<=mid;++i,++j)
{
int x=(a[i]+a[j])%md;
a[i]=(a[i]-a[j]+md)%md;
a[j]=x;
}
} int pow(int a,int b)
{
int ret=1;
while (b)
{
if (b&1) ret=(ll)ret*a%md;
a=(ll)a*a%md;
b>>=1;
}
return ret;
} void DWT(int l,int r)
{
if (l==r) return;
int mid=l+r>>1;
for (int i=l,j=mid+1;i<=mid;++i,++j)
{
int x=(ll)(a[j]-a[i]+md)*inv%md;
a[i]=(ll)(a[i]+a[j])*inv%md;
a[j]=x;
}
DWT(l,mid); DWT(mid+1,r);
} int main()
{
inv=pow(2,md-2);
for (int i=2;i<maxn;++i)
if (!ispr[i])
{
pr[++top]=i;
for (int j=2;j*i<maxn;++j)
ispr[i*j]=1;
}
while (scanf("%d%d",&n,&m)!=EOF)
{
memset(a,0,sizeof a);
for (int i=1;pr[i]<=m;++i) a[pr[i]]=1;
len=1; while (len<=m) len<<=1; len--;
FWT(0,len);
F(i,0,len) a[i]=pow(a[i],n);
DWT(0,len);
printf("%d\n",a[0]);
}
}

  

BZOJ 4589 Hard Nim ——FWT的更多相关文章

  1. bzoj 4589 Hard Nim——FWT

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4589 一开始异或和为0的话先手必败.有 n 堆,每堆可以填那些数,求最后异或和为0的方案数, ...

  2. bzoj 4589 Hard Nim —— FWT

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4589 先手必败,是一开始所有石子的异或和为0: 生成函数 (xpri[1] + xpri[2 ...

  3. BZOJ.4589.Hard Nim(FWT)

    题目链接 FWT 题意即,从所有小于\(m\)的质数中,选出\(n\)个数,使它们异或和为\(0\)的方案数. 令\(G(x)=[x是质数]\),其实就是对\(G(x)\)做\(n\)次异或卷积后得到 ...

  4. FWT [BZOJ 4589:Hard Nim]

    4589: Hard Nim Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 275  Solved: 152[Submit][Status][Disc ...

  5. BZOJ 4589 Hard Nim(FWT+博弈论+快速幂)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=4589 [题目大意] 有n堆石子,每堆都是m以内的质数,请问后手必胜的局面有几种 [题解 ...

  6. BZOJ 4589 Hard Nim(FWT加速DP)

    题目链接  Hard Nim 设$f[i][j]$表示前$i$个数结束后异或和为$j$的方案数 那么$f[i][j] = f[i-1][j$ $\hat{}$ $k]$,满足$k$为不大于$m$的质数 ...

  7. bzoj 4589: Hard Nim【线性筛+FWT+快速幂】

    T了两次之后我突然意识到转成fwt形式之后,直接快速幂每次乘一下最后再逆回来即可,并不需要没此次都正反转化一次-- 就是根据nim的性质,先手必输是所有堆个数异或和为0,也就变成了一个裸的板子 #in ...

  8. [BZOJ 4589]Hard Nim

    Description 题库链接 两人玩 \(nim\) 游戏,\(n\) 堆石子,每堆石子初始数量是不超过 \(m\) 的质数,那么后手必胜的方案有多少种.对 \(10^9+7\) 取模. \(1\ ...

  9. bzoj 4589 FWT

    #include<bits/stdc++.h> #define ll long long using namespace std; ; ; ; ; <<],b[<< ...

随机推荐

  1. Javafinal方法

    class Animal{     public final void eat(){         System.out.println("吃");     } } class ...

  2. 忘记Centos7.2下root用户密码后的处理方式

    1)重启系统 重新启动系统后并按f2键,进入如下的界面,再按e键. 2)修改启动内核代码 在代码的linux16行中,将ro rhgb的ro修改为rw init=/sysroot/bin/sh. 3) ...

  3. uiviewcontroller 键盘不遮挡信息

    //添加监听事件 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow: ...

  4. Servlet和JSP之有关Servlet和JSP的梳理(一)

    大二第一学期的时候有学JSP的课,但是因为在开学之前做过JSP的小项目,所以一个学期的课也没听,直到期末考试成绩出来了,才回想JSP的内容还有多少记得,没想到模模糊糊也记不起多少,赶紧回头学回来.接下 ...

  5. Koa -- 基于 Node.js 平台的下一代 web 开发框架 koa.bootcss.com

    Koa -- 基于 Node.js 平台的下一代 web 开发框架 koa.bootcss.com

  6. C#在透明窗体WinForm上面画图(电子尺小工具的实现)

    前几天要做一个微信调一调的外挂,里面用到了尺子测量距离,然后就自己下载了一个电子尺,最近要升级我的跳一跳外挂,然后就准备自己做一个电子尺,嵌入到我的外挂里面,在嵌入到我的外挂之前,我自己做了一个完整版 ...

  7. 搭建SSI开发框架原理

    Spring2.5.Struts2.Ibatis开发框架搭建(一) ssi, ibatis 一.框架下载 1.1   Struts2框架 Struts2框架发展于WebWork,现在捐献给了Apach ...

  8. spring源码学习之容器的基本实现

    最近想拿出一部分时间来学习一下spring的源码,还特意买了一本书结合来看,当然主要是学习并跟着作者的思路来踏上学习spring的源码的道路,特意在此记录一下,<spring源码深度解析> ...

  9. MYSQL - 限制资源的使用

    MYSQL - 限制资源的使用 1.MAX_QUERIES_PER_HOUR 用来限制用户每小时运行的查询数量 mysql> grant select on *.* to 'cu_blog'@' ...

  10. linux的less命令

    less 在查看之前不会加载整个文件.可以尝试使用 less 和 vi 打开一个很大的文件,你就会看到它们之间在速度上的区别. 在 less 中导航命令类似于 vi.本文中将介绍一些导航命令以及使用 ...