样例数据
输入
10
3 2
4 2
1 1
1 2
1 3
9 3
9 11
9 12
9 1000
8 11
输出
Bob
Limak
Limak
Bob
Bob
Limak
Limak
Bob
Bob
Bob
样例解释
在第一组数据中,Limak 先吃一颗糖,然后 Bob 吃两颗,接着改 Limak 吃 3 颗了,但是它已
经没法吃这么多了,所以 Bob 获胜。
在第二组数据中,轮到 Bob 吃 4 颗糖的时候吃不下了,所以 Limak 获胜。
在第八组数据中,轮到 Limak 吃 7 颗糖的时候吃不了了,所以 Bob 获胜。
时间限制
1 秒
分析:
先算出每进行一步每个人需要吃的糖果的数量,之后计算每吃一次每个人糖果的剩余量,如果有人的糖果不够吃,即小于0了,那么将这个人的标志位置1,说明另外一个人获胜了
#include<stdio.h>
int Lim[1005] = {0},Bob[1005] = {0};//输入的两人最多能吃的糖的数量
int Lim_stan[1005] = {0},Bob_stan[1005] = {0};//理论两人最多能吃的糖的数量
int flagLim[1005] = {0},flagBob[1005] = {0};//分别的标志位
int main()
{
freopen("input.txt","r",stdin);
int t = 0;
for(int i = 1;i <= 1000;i++)
{
Lim_stan[i] = 2*i-1;
Bob_stan[i] = 2*i;
}
scanf("%d",&t);
for(int i = 1;i <= t;i++)
scanf("%d %d",&Lim[i],&Bob[i]);
for(int i = 1;i <= t;i++)
{
int a = Lim[i],b = Bob[i],j = 1;
do{
//printf("%d\n%d %d %d\n",a,b,Lim_stan[j],Bob_stan[j]);
a = a - Lim_stan[j];
if(a < 0)
{
flagLim[i] = 1;
break;
}
b = b - Bob_stan[j];
if(b < 0)
{
flagBob[i] = 1;
break;
}
j++;
}while(a >= 0 && b >= 0);
//printf("****************\n");
}
for(int i = 1;i <= t;i++)
{
if(flagLim[i] == 1 && flagBob[i] == 0)
printf("Bob\n");
if(flagLim[i] == 0 && flagBob[i] == 1)
printf("Limak\n");
}
return 0;
}