1. 程式人生 > >Problem Q 小熊與糖果

Problem Q 小熊與糖果

樣例資料
輸入
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 秒

#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;
}