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 Input21 22 2 Sample OutputCase 1: AliceCase 2: Bob |
题意:一块长方形纸张。Alice先对折剪下,再由Bob对折剪下。若一个人无论怎么剪面积都是小数的时候。这个人就输了这场比赛。
思路:长方形的面积是长乘以宽,无论以哪一个边对折剪下,那条边都是除以2,若有一条边长度变为小数,则这个人就输了。假设模拟。有可能会超时,运用边找规律。
当两条边都变成奇数的时候,则这个人就输了。也就是说。看偶数能对折几次。
Alice and Bob#include#include #include #include 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;}