• CSDN高校俱乐部第二届战神杯第二题题解


    两个人玩一个数字游戏,给定两个正整数A,B,两个人轮流从一个数中减去另外一个数的正数倍。要保证结果非负,

    首先得到0的人获胜。

    比如:30 8经过一步操作能够变为22 8 或者14 8 或者 6 8。

    两个人都足够聪明。

    输入格式:

    多组数据,每组数据占一行是两个空格分隔的正整数(在32位整书范围内)

    输出格式:

    每组数据一行,输出是第一个人赢。还是第二个人赢。

    输入:

    3 5

    4 5

    输出:

    1

    2

    思路:假设你知道连分数。这题就是水题一道了。(记得某神说,菜鸟做完一题总是说这题非常easy!没错,我就是菜鸟)

    先手必败当且仅当(sqrt(5)-1)/2=1/[1;1,1,1,...]<a/b<[1;1,1,1,...]=(sqrt(5)+1)/2.

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <cmath>
    using namespace std;
    double lt=(sqrt(5.0)-1)/2.0;
    double rt=(sqrt(5.0)+1)/2.0;
    bool isWin(int a,int b){
        double tmp=(a+0.0)/b;
        if(lt<tmp&&tmp<rt){
            return false;
        }
    
       return true;
    }
    int main()
    {
        int a,b;
        while(cin>>a>>b){
          if(isWin(a,b)){
             puts("1");
          }else{
             puts("2");
          }
        }
        return 0;
    }
    



  • 相关阅读:
    690. 员工的重要性
    【递推算法】
    【数据排序】快速排序
    【数据排序】车厢重组
    【基本算法--高精度计算】大整数相加
    【基本算法--高精度计算】回文数
    高精度计算 除法 高精除以低精
    PReLU
    重学C++(1)
    概率论基础知识回顾(1)
  • 原文地址:https://www.cnblogs.com/claireyuancy/p/7049453.html
Copyright © 2020-2023  润新知