编程挑战高校俱乐部数字游戏答案


题目详情

两个人玩一个数字游戏,给定两个正整数A,B,两个人轮流从一个数中减去另外一个数的正数倍,要保证结果非负,首先得到0的人获胜。比如:30 8经过一步操作能够变为22 8 或者14 8 或者 6 8。

两个人都足够聪明。


输入格式:
多组数据,每组数据占一行是两个空格分隔的正整数(在32位整书范围内)
输出格式:
每组数据一行,输出是第一个人赢,还是第二个人赢。



答题说明
输入例子
3 5
4 5
输出例子:

1

2

代码例如以下

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Mathematics {
    
    public static void main(String[] args) {
        Scanner cin = new Scanner(System.in);
        
        int min = 0;//较小数
        int max = 0;//较大数
        while (cin.hasNext()) {
            min = cin.nextInt();
            max = cin.nextInt();
            if (min > max) {
                int temp = min;
                min = max;
                max = temp;
            }
            
            if (max % min == 0) {
                System.out.println(1);//第一个人赢
                continue;
            }
            
            List<Integer> queue = new ArrayList<Integer>();
            while (true) {
                int shang = max / min;
                int mod = max % min;
                if (mod == 0)
                    break;
                queue.add(shang);
                
                if (min > mod) {
                    int temp = min;
                    min = mod;
                    mod = temp;
                }
                max = mod;
            }
            
            int size = queue.size();
            if (size == 1) {
                if (queue.get(0) == 1) {
                    System.out.println(2);//第二个人赢
                }
                else {
                    System.out.println(1);//第一个人赢
                }
                continue;
            }
            
            int win = -1;
            for (int i = size - 1; i >= 0; i--) {
                if (i == size - 1) {
                    if (queue.get(i) == 1) {
                        win = 1;
                    }
                    else {
                        win = 2;
                    }
                }
                else if (i == 0) {
                    if (win == 2 && queue.get(0) > 1) {
                        win = 1;
                    }
                }
                else {
                    if (queue.get(i) == 1) {
                        win = win == 1 ? 2 : 1;
                    }
                    else {
                        win = 2;
                    }
                }
            }
            System.out.println(win);
        }
        cin.close();
    }
    
}

优质内容筛选与推荐>>
1、win10系统安装loadrunner11提示“为了对电脑进行保护 已经阻止此应用”的解决方案
2、20145302张薇 《信息安全系统设计基础》第11周学习总结
3、MySQL优化笔记
4、L1-011.A-B
5、Linux中的定时任务at、crontab


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号