题目链接:点击打开链接
题目解析:
题目为巴什博弈的模板,题目可以转化为一共有n颗石子,每次最多拿m个,先手拿走最后一颗输出Grass,否则输出Rabbit.
n颗石子,最多拿m颗,即当n == m+1的时候拿走了m颗,下一次必定为胜利,所以当一方的石子数是n%(m+1) == 0的时候这一方是必败的局势,所以有n=(m+1)*r+s(r为任意自
然数),所以拿石子的时候总是留给队手一个(m+1)的倍数即可。
#include <algorithm>
#include <iostream>
#include <numeric>
#include <cstring>
#include <iomanip>
#include <string>
#include <vector>
#include <cstdio>
#include <bitset>
#include <queue>
#include <stack>
#include <cmath>
#include <map>
#include <set>
#define LL __int64
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
const int INF = 0x3f3f3f3f;
using namespace std;
int main(){
int t,n,m;
scanf("%d",&t);
while(t-- && scanf("%d %d",&n,&m)){
if(n%(m+1) == 0)
puts("Rabbit");
else
puts("Grass");
}
return 0;
}