教官的游戏

【题目描述】

有N个学生刚吃完饭,准备出食堂,学校有个规矩:必须2人一排或3人一排离开。

两个教官A,B轮流取2或3人,谁先取完谁就赢得游戏(A先取)。

若两人都采用最优策略,询问谁会赢。

【输入描述】

一个整数N。

【输出描述】

A赢输出1;

B赢输出-1;

平局输出0;

若人数为负,输出120。

【样例输入】

7

【样例输出】

1

【数据范围及提示】

N <= 10000。

源代码:

#include<cstdio>
int n;
int main() //显而易见的简单博弈论。
{
    scanf("%d",&n);
    if (n<0)
      printf("120");
    else
    {
        int t1=n/5,t2=n%5;
        if (!t2) //若能够整除,则一定为ABAB状态。
          printf("-1");
        else
          if (t1&1) //判断是否为奇数。
          {
            if (t2<2||t2>3) //此情况为2步不为3步。
              printf("-1"); //ABAB状态。
            else
              printf("1"); //ABABA状态。
          }
          else
          {
            if (t2<2||t2>3)
              printf("1");
            else
              printf("-1");
          }
    }
    return 0;
}
原文地址:https://www.cnblogs.com/Ackermann/p/5559991.html