主页 | 讨论版 | 问题 | 名次 | 状态 | 统计 |
问题 G: 我们再来玩游戏
时间限制: 1 Sec 内存限制: 128 MB提交: 18 解决: 9
[ 提交][ 状态][ 讨论版]
题目描述
各位勇敢者要玩的第一个游戏是什么呢?很简单,它是这样定义的:
1、 本游戏是一个二人游戏;
2、 有一堆石子一共有n个;
3、 两人轮流进行;
4、 每走一步可以取走1…m个石子;
5、 最先取光石子的一方为胜;
如果游戏的双方使用的都是最优策略,请输出哪个人能赢。
1、 本游戏是一个二人游戏;
2、 有一堆石子一共有n个;
3、 两人轮流进行;
4、 每走一步可以取走1…m个石子;
5、 最先取光石子的一方为胜;
如果游戏的双方使用的都是最优策略,请输出哪个人能赢。
输入
输入数据首先包含一个正整数C(C<=100),表示有C组测试数据。
每组测试数据占一行,包含两个整数n和m(1<=n,m<=1000),n和m的含义见题目描述。
每组测试数据占一行,包含两个整数n和m(1<=n,m<=1000),n和m的含义见题目描述。
输出
如果先走的人能赢,请输出“first”,否则请输出“second”,每个实例的输出占一行。
样例输入
2
23 2
4 3
样例输出
first
second
提示
【思路】:
如果TT想赢得这场比赛,即先把石子取完。务必保证TT最后一次取石子时,剩余的石子数小于等于M,所以倒数第二次TT的室友取石子时务必保证,剩余的石子数为M+1,这样无论他取几个石子(1-M),TT都能在最后一次全部取完。
#include<iostream>
using namespace std;
int main()
{
int t,n,m;
cin>>t;
while(t--)
{
cin>>n>>m;
if(n%(m+1)==0)
{ cout<<"second"<<endl;
}
else
{
cout<<"frist"<<endl;
}
}
return 0;
}