【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 }