#include <iostream>
#include <stdio.h>
#include <string.h>
using namespace std;
static int m,n;
static int f[1200];
static int mex(int p)
{
bool g[1200]={0};
for (int i=1;i<=n;++i)
{
int t = p+i;
if (t>m)
break;
if (f[t]==-1)
f[t] = mex(t);
g[f[t]] = 1;
}
for (int i=0;i<=n;i++)
{
if (!g[i])
return i;
}
}
int main()
{
while(~scanf("%d %d",&m,&n))
{
memset(f,-1,sizeof(f));
bool g[1200]={0};
for (int i=1;i<=n;++i)
{
int t = i;
if (t>m)
break;
if (f[t]==-1)
f[t] = mex(t);
g[f[t]] = 1;
}
if (!g[0])
printf("none\n");
else
{
int ans[1200]={};
int cnt = 0;
for (int i=1;i<=n;i++)
if (!g[i])ans[cnt++] = i;
for (int i=0;i<cnt-1;++i)
printf("%d ",ans[i]);
printf("%d\n",ans[cnt-1]);
}
}
return 0;
}
HDOJ2149反向SG函数
最新推荐文章于 2020-05-03 19:53:38 发布