题目描述
一天小明和小红在玩取石子游戏,游戏规则是这样的:
(1)本游戏是一个二人游戏;
(2)有一堆石子,共有n个;
(3)两人轮流进行;
(4)每走一步可以取走1~m个石子;
(5)最先取光石子的一方为胜。
如果游戏的双方使用的都是最优策略,请输出哪个人能赢。
输入
输入的第一行是一个正整数C(C<=100),表示有C组测试数据。
每组输入两个整数n和m(1<=n,m<=1000),n和m的含义见题目描述。
输出
对于每组输入,如果先走的人能赢,请输出"first",否则请输出"second"。
样例输入
2
23 2
4 3
样例输出
first
second
考虑第一个人什么时候赢,如果石子数为1到m,赢,m+1输,m+2可以让对方为m+1,赢,2m+2时怎么取都大于m+1输,2m+3可以取到2m+2让对方输,以此类推,如果n是m+1的整数倍,则A输,否则B输。
代码
```
1 #include<iostream>
2 #include<cstdio>
3 #include<cmath>
4 #include<cstring>
5 #include<algorithm>
6 #define ll long long
7 using namespace std;
8 int T,n,m;
9 int main(){
10 cin>>T;
11 while(T--){
12 cin>>n>>m;
13 if(n%(m+1)){
14 cout<<"first\n";
15 }
16 else cout<<"second\n";
17 }
18 return 0;
19 }```
View Code