湘潭邀請賽——Alice and Bob
Alice and Bob |
||
Accepted : 133 | Submit : 268 | |
Time Limit : 1000 MS | Memory Limit : 65536 KB |
Problem DescriptionThe famous "Alice and Bob" are playing a game again. So now comes the new problem which need a person smart as you to decide the winner. The problem is as follows: They are playing on a rectangle paper, Alice and Bob take turn alternatively, for each turn, a people cut the rectangle vertically or horizontally, the result two rectangle after cut must be IDENTICAL, also the side must be integer, after the cut, one rectangle will be descarded. The first people fail to cut lose the game. Of course, Alice makes first as usual. InputFirst Line contains an integer t indicate there are t cases(1≤t≤1000) For each case: The input consists of two integers w and h(1≤w,h≤1,000,000,000), the size of rectangle. OutputFirst output Case number For each case output Alice or Bob, indicate the winner. Sample Input2 1 2 2 2 Sample OutputCase 1: Alice Case 2: Bob |
題意:一塊長方形紙張。Alice先對折剪下,再由Bob對折剪下。若一個人無論怎麽剪面積都是小數的時候。這個人就輸了這場比賽。
思路:長方形的面積是長乘以寬,無論以哪一個邊對折剪下,那條邊都是除以2,若有一條邊長度變為小數,則這個人就輸了。假設模擬。有可能會超時,運用邊找規律。
當兩條邊都變成奇數的時候,則這個人就輸了。也就是說。看偶數能對折幾次。
Alice and Bob #include <iostream> #include <stdio.h> #include <string.h> #include <stdlib.h> using namespace std; int main() { int n,m,i,j,k,a,b; scanf("%d",&n); for(m = 1;m <= n;m++) { scanf("%d%d",&a,&b); i = 0; while(a % 2 == 0) { i++; a = a / 2; } while(b % 2 == 0) { i++; b = b / 2; } if(i % 2 == 0) printf("Case %d: Bob\n",m); else printf("Case %d: Alice\n",m); } return 0; }
湘潭邀請賽——Alice and Bob