zoukankan      html  css  js  c++  java
  • 51nod1072

    有2堆石子。A B两个人轮流拿,A先拿。每次可以从一堆中取任意个或从2堆中取相同数量的石子,但不可不取。拿到最后1颗石子的人获胜。假设A B都非常聪明,拿石子的过程中不会出现失误。给出2堆石子的数量,问最后谁能赢得比赛。

    例如:2堆石子分别为3颗和5颗。那么不论A怎样拿,B都有对应的方法拿到最后1颗。

    Input

    第1行:一个数T,表示后面用作输入测试的数的数量。(1 <= T <= 10000) 
    第2 - T + 1行:每行2个数分别是2堆石子的数量,中间用空格分隔。(1 <= N <= 2000000)

    Output

    共T行,如果A获胜输出A,如果B获胜输出B。

    Sample Input

    3
    3 5
    3 4
    1 9

    Sample Output

    B
    A
    A
    #include <iostream>
    #include <cstdio>
    #include <vector>
    #include <cstring>
    #include <algorithm>
    #include <string>
    #include <queue>
    #include<cmath>
    using namespace std;
    //const int N=100005;
    //const int INF=0x3f3f3f3f;
    int main()
    {
        int a,b,k,t;
        double c;
        c=(1.0+sqrt(5.0))/2.0;
        scanf("%d",&t);
        while(t--)
        {
            scanf("%d%d",&a,&b);
            if(a>b)
                swap(a,b);
            k=b-a;
            if(a==int(c*k))
                printf("B
    ");
            else
                printf("A
    ");
        }
        return 0;
    }
    
  • 相关阅读:
    阅读之分布式架构的数据一致
    阅读之MySQL数据库分表
    阅读笔记1
    问题账户需求分析
    软件需求分析阅读笔记
    开发进度第四天
    开发进度第三天
    开发进度第二天
    线程中三个关键对象闭锁,栅栏,信号量
    java多线程中关于原子操作
  • 原文地址:https://www.cnblogs.com/aerer/p/9930994.html
Copyright © 2011-2022 走看看