记录编号 |
362523 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[HAOI 2015]数组游戏 |
最终得分 |
100 |
用户昵称 |
FoolMike |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
1.746 s |
提交时间 |
2017-01-07 17:37:07 |
内存使用 |
11.73 MiB |
显示代码纯文本
#include<cstdio>
#define rint register int
const int N=1e6+10;
int n,T,sg[N],sg_[N],vis[N];
inline int SG(int x){return x<N?sg[x]:sg_[n/x];}
void solve(int x){
if (SG(x)) return;
for (rint l=2,r;l<=x;l=r+1)
r=x/(x/l),solve(x/l);
static int C=0;C++;
int now=0,ans=0;
vis[0]=C;
for (rint l=2,r,Sg;l<=x;l=r+1){
Sg=SG(x/l);
r=x/(x/l);
vis[now^Sg]=C;
if ((r-l+1)&1) now^=Sg;
}
while (vis[ans]==C) ans++;
if (x<N) sg[x]=ans;else sg_[n/x]=ans;
}
int main()
{
freopen("haoi2015_t3.in","r",stdin);
freopen("haoi2015_t3.out","w",stdout);
scanf("%d%d",&n,&T);
solve(n);
while (T--){
int sum=0,k,x;
scanf("%d",&k);
while (k--) scanf("%d",&x),sum^=SG(n/x);
puts(sum?"Yes":"No");
}
return 0;
}