hdu 2149

sg值

但是这一题要注意一点,就是N值大于等于M值时考虑。

View Code
 1 #include <cstdio>
2 #include <cstring>
3
4 int sg[1101];
5 int mex[1101];
6 int m,n;
7
8 void get_sg()
9 {
10 int i,j;
11 sg[0] = 0;
12 for(i = 1;i <1101;i ++)
13 {
14 memset(mex,0,sizeof(mex));
15 for(j = 1;j <=n ;j ++)
16 {
17 if(j > i)
18 break;
19 mex[sg[i - j]] = 1;
20 }
21 j = 0;
22 while(mex[j]) j ++;
23 sg[i] = j;
24 }
25 }
26
27 int main()
28 {
29 while(scanf("%d%d",&m,&n) == 2)
30 {
31 int i;
32 if(n >= m)
33 {
34 printf("%d",m);
35 int k = m;
36 for(i = 0;i < n-m;i ++)
37 printf(" %d",++k);
38 printf("\n");
39 continue;
40 }
41 get_sg();
42
43 if(sg[m] == 0)
44 printf("none\n");
45 else
46 printf("%d\n",sg[m]);
47 }
48
49 return 0;
50 }
51
原文地址:https://www.cnblogs.com/Shirlies/p/2388313.html