简单入门题:

(勇敢者的游戏)各位勇敢者要玩的第一个游戏是什么呢?很简单,它是这样定义的:
1、  本游戏是一个二人游戏;
2、  有一堆石子一共有n个;
3、  两人轮流进行;
4、  每走一步可以取走1…m个石子;
5、  最先取光石子的一方为胜;

如果游戏的双方使用的都是最优策略,请输出哪个人能赢。
Input:
输入数据首先包含一个正整数C(C<=100),表示有C组测试数据。
每组测试数据占一行,包含两个整数n和m(1<=n,m<=1000),n和m的含义见题目描述。
Output:
如果先走的人能赢,请输出“first”,否则请输出“second”,每个实例的输出占一行。
Sample Input:
2
23 2
4 3

Sample Output:

first
second

分析:

简单的巴什博奕,根据公式:n = ( m + 1 ) * r + s ,若s 不为0,则先取者只要先取走s ,那么它就稳赢了;

如果s为0的话,那就输定了,先手如果取k,则后手只要去m+1-k,先手迟早会面对m+1个石头子,就输了。

代码:

#include<stdio.h>
int main()
{
    int c,n,m;
    scanf("%d",&c);
    while(c--)
    {
       scanf("%d%d",&n,&m);
       if(n%(m+1)==0) printf("second\n");
       else printf("first\n");    
    }
    return 0;
}
View Code

相关文章:

  • 2021-11-23
猜你喜欢
  • 2021-07-19
  • 2021-06-08
  • 2022-12-23
  • 2022-12-23
  • 2021-04-11
相关资源
相似解决方案