数字游戏(java)
2014-06-13 21:12
190 查看
题目描述:
两个人玩一个数字游戏,给定两个正整数A,B,两个人轮流从一个数中减去另外一个数的正数倍,要保证结果非负,
首先得到0的人获胜。例如:30 8经过一步操作可以变为22 8 或者14 8 或者 6 8。两个人都足够聪明。
输入格式:
多组数据,每组数据占一行是两个空格分隔的正整数(在32位整书范围内)
输出格式:
每组数据一行,输出是第一个人赢,还是第二个人赢。
答题说明
输入样例
3 5
4 5
输出样例:
1
2
解题思路:
前提:a2>b2;
情况1:看天命也就是a2/b2恒等于1,谁最后选谁胜。
情况2:当第一次找到a2/b2>=2,此时谁选择谁胜出,即根据最优策略知第一次选择输赢已定。
简化后:
两个人玩一个数字游戏,给定两个正整数A,B,两个人轮流从一个数中减去另外一个数的正数倍,要保证结果非负,
首先得到0的人获胜。例如:30 8经过一步操作可以变为22 8 或者14 8 或者 6 8。两个人都足够聪明。
输入格式:
多组数据,每组数据占一行是两个空格分隔的正整数(在32位整书范围内)
输出格式:
每组数据一行,输出是第一个人赢,还是第二个人赢。
答题说明
输入样例
3 5
4 5
输出样例:
1
2
解题思路:
前提:a2>b2;
情况1:看天命也就是a2/b2恒等于1,谁最后选谁胜。
情况2:当第一次找到a2/b2>=2,此时谁选择谁胜出,即根据最优策略知第一次选择输赢已定。
import java.util.Scanner; public class DigitalGame { public static int a; public static int b; public static void main(String[] args) { Scanner in=new Scanner(System.in); while(in.hasNextInt()){ a=in.nextInt(); b=in.nextInt(); if(a<b){ a=a+b; b=a-b; a=a-b; } System.out.println(caculate(a,b)); } } private static int caculate(int a2, int b2) { int res=1; int start=0; int temp=0; boolean bool=false; boolean ok=true; while(true){ if(a2%b2==0)break; else{ if(a2/b2>=2&&ok){ start=res+1; ok=false; break; } temp=a2%b2; a2=b2; b2=temp; bool=!bool; res++; } } return ok?bool?2:1:start%2+1; } }
简化后:
import java.util.Scanner; public class DigitalGame { public static void main(String[] args) { Scanner in=new Scanner(System.in); while(in.hasNextInt()){ int a=in.nextInt(); int b=in.nextInt(); if(a<b){ a=a+b; b=a-b; a=a-b; } int temp=0; boolean bool=true; if(a!=b){ while(true){ if((a-b)>>1>=b)break; temp=b; b=a-b; a=temp; bool=!bool; } } System.out.println(bool?1:2); } } }
相关文章推荐
- JAVA--第2周实验--猜数字游戏
- Java数字抽奖游戏核心代码及分析
- java 猜数字游戏
- java数字游戏
- 实验三 Java猜数字游戏开发
- Java 小例子:猜数字游戏
- 20160729------JAVA基础语法【for循环、猜数字游戏】
- 分享一个猜数字游戏的JAVA代码
- java--猜数字游戏
- 数字游戏和JAVA的一些坑
- [Java]猜数字游戏
- java web 程序---猜数字游戏
- Java 猜数字游戏
- Java编程----猜数字游戏
- 第二届战神杯线上编程挑战赛月赛第二题:数字游戏(Java)
- 猜数字游戏。编写一个Java应用程序,实现功能:
- java数字游戏基础篇
- java 简单猜数字游戏
- 猜数字游戏(java)
- java基础作业之猜数字游戏;