湘潭邀请赛——Alice and Bob

Alice and Bob

Accepted : 133   Submit : 268
Time Limit : 1000 MS   Memory Limit : 65536 KB 

Problem Description

The 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.

Input

First 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.

Output

First output Case number For each case output Alice or Bob, indicate the winner.

Sample Input

2
1 2
2 2

Sample Output

Case 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
",m);
        else
            printf("Case %d: Alice
",m);
    }
    return 0;
}


原文地址:https://www.cnblogs.com/gavanwanggw/p/6815705.html