码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2016-04-07 20:45:47      阅读:140      评论:0      收藏:0      [点我收藏+]

标签:

题目详情

两个人玩一个数字游戏,给定两个正整数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();
    }
    
}

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

标签:

原文地址:http://www.cnblogs.com/mengfanrong/p/5365111.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!