XTU OJ 1209 Alice and Bob 2014(嘉杰信息杯ACM/ICPC湖南程序设计邀请赛暨第六届湘潭市程序设计竞赛)

21 篇文章 0 订阅
11 篇文章 0 订阅
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


上次比赛的题,比赛完了就没去看它了,最近几天发现oj上有题目了,就把这几道题重新做了一下,这道题,上次比赛的时候看到这道题还以为是博弈的题,以为要用DP去做,所以题目都没怎么去看,就直接跳过了,后来看到a的人比较多,就仔细看了一下题目,读懂题意之后,发现其实很简单的一道题,做的慢了。比赛时对于题目难易的分析还是不够;
记录一下自己的思路,首先分析给的w,h是奇数还是偶数,如果两个都是奇数,说明就不能再分了,分到1也不能分了(1也是奇数),当有一个是偶数都还可以继续分,我用的递归,如果能分就一直分下去,直到不能分为止;
下面是ac的代码;
#include <iostream>
#include <cstdio>
using namespace std;
int j;
void compete(int w,int h)//递归
{
    if(w%2==0) //这里还可以写成 (!w&1)
    {
        w/=2;
        j++;
        compete(w,h);
    }
    else if(h%2==0)
    {
        h/=2;
        j++;
        compete(w,h);
    }
}
int main()
{
    int t,i;
    int w,h;
    scanf("%d",&t);
    for(i=1;i<=t;i++)
    {
        j=0;
        scanf("%d%d",&w,&h);
        compete(w,h);
        printf("Case %d: ",i);
        if(j%2==0)
            printf("Bob\n");
        else
            printf("Alice\n");
    }
    return 0;
}


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值