首页 > 代码库 > 【HDOJ】2149 Public Sale

【HDOJ】2149 Public Sale

看Discuss说是博弈论,没学到这个分类。不过仔细想了想,发现。
如果m<=n,那么可能结果为m,m+1...n。
否则,如果m%(n+1) == 0,那么无论如何都会输,因为无论先报价什么数,如a,另一个人只要报价n+1-a就可以取得最后的土地;而相反,m%(n+1)!=0,那么第一次报价为余数,余下报价只需要报价n+1-b就可以取得最后的土地。

 1 #include <stdio.h>
 2 
 3 int main() {
 4     int m, n;
 5     int i;
 6 
 7     while (scanf("%d %d", &m, &n) != EOF) {
 8         if (m <= n) {
 9             printf("%d", m);
10             for (i=m+1; i<=n; ++i)
11                 printf(" %d", i);
12             printf("\n");
13         } else {
14             if (m%(n+1) == 0)
15                 printf("none\n");
16             else
17                 printf("%d\n", m%(n+1));
18         }
19     }
20 
21     return 0;
22 }