趣味算式--第三届蓝桥杯预赛真题 java本科组 第9题
2012-05-09 22:42
441 查看
这题我当时比赛的时候没做出来,今天想了想也没想出好的方法,网上一搜,恍然大悟啊!!
题目:
匪警请拨110,即使手机欠费也可拨通!
为了保障社会秩序,保护人民群众生命财产安全,警察叔叔需要与罪犯斗智斗勇,因而需要经常性地进行体力训练和智力训练!
某批警察叔叔正在进行智力训练:
1 2 3 4 5 6 7 8 9 = 110;
请看上边的算式,为了使等式成立,需要在数字间填入加号或者减号(可以不填,但不能填入其它符号)。之间没有填入符号的数字组合成一个数,例如:12+34+56+7-8+9 就是一种合格的填法;123+4+5+67-89 是另一个可能的答案。
请你利用计算机的优势,帮助警察叔叔快速找到所有答案。
每个答案占一行。形如:
12+34+56+7-8+9
123+4+5+67-89
......
已知的两个答案可以输出,但不计分。
各个答案的前后顺序不重要。
注意:
请仔细调试!您的程序只有能运行出正确结果的时候才有机会得分!
请把所有类写在同一个文件中,调试好后,存入与【考生文件夹】下对应题号的“解答.txt”中即可。
相关的工程文件不要拷入。
请不要使用package语句。
源程序中只能出现JDK1.5中允许的语法或调用。不能使用1.6或更高版本。
---------------------------------华丽的分割线----------------------------------------------------
代码如下:
题目:
匪警请拨110,即使手机欠费也可拨通!
为了保障社会秩序,保护人民群众生命财产安全,警察叔叔需要与罪犯斗智斗勇,因而需要经常性地进行体力训练和智力训练!
某批警察叔叔正在进行智力训练:
1 2 3 4 5 6 7 8 9 = 110;
请看上边的算式,为了使等式成立,需要在数字间填入加号或者减号(可以不填,但不能填入其它符号)。之间没有填入符号的数字组合成一个数,例如:12+34+56+7-8+9 就是一种合格的填法;123+4+5+67-89 是另一个可能的答案。
请你利用计算机的优势,帮助警察叔叔快速找到所有答案。
每个答案占一行。形如:
12+34+56+7-8+9
123+4+5+67-89
......
已知的两个答案可以输出,但不计分。
各个答案的前后顺序不重要。
注意:
请仔细调试!您的程序只有能运行出正确结果的时候才有机会得分!
请把所有类写在同一个文件中,调试好后,存入与【考生文件夹】下对应题号的“解答.txt”中即可。
相关的工程文件不要拷入。
请不要使用package语句。
源程序中只能出现JDK1.5中允许的语法或调用。不能使用1.6或更高版本。
---------------------------------华丽的分割线----------------------------------------------------
代码如下:
public class InterestingFormula { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub char[] arr=new char[17]; for(int i=0;i<9;i++) { arr[2*i]=Character.toChars(i+49)[0];//1的asc码为49 } //i作为一个三进制数 for(int i=0;i<Math.pow(3, 8);i++) { int p=i; int tmp=p%3; for(int j=0;j<8;j++) { switch (tmp) { case 0: arr[2*j+1]=' '; break; case 1: arr[2*j+1]='+'; break; case 2: arr[2*j+1]='-'; break; default: break; } p=p/3; tmp=p%3; } if(110==GetAnswer(arr)) { Print(arr); } } } //由arr计算出其中的结果返回 public static int GetAnswer(char[] array) { char last='+'; int sum=0,num=0; for(int i=0;i<17;i++) { if(array[i]>='0'&&array[i]<='9') num=array[i]-48+num*10; else if(array[i]==' ') continue; else { if(last=='+') sum+=num; else sum-=num; last=array[i]; num=0; } } if(last=='+') sum+=num; else sum-=num; return sum; } //打印结果 public static void Print(char[] array) { for(int i=0;i<17;i++) { if(array[i]!=' ') System.out.print(array[i]); } System.out.println(); } }
相关文章推荐
- 黄金队列,汉诺塔,奇怪的比赛,第一个数字,割圆,最大数,矩形的交集和并集,趣味算式(第三届蓝桥杯Java本科预赛试题)
- 夺冠概率--第三届蓝桥杯预赛真题 c++本科组 第9题(我用java做的)
- 分酒--第三届蓝桥杯预赛真题 java本科组 第10题
- 密码发生器--第三届蓝桥杯预赛真题 c++本科组 第8题(我用java做的)
- 取球游戏--第三届蓝桥杯预赛真题 c++本科组 第10题(我用java做的)
- 第三届蓝桥杯预赛真题 Java高职第九题-- 密码发生器
- 趣味算式——蓝桥杯2012年Java预赛
- 第三届蓝桥杯java本科组预赛第7题
- [JAVA][2013蓝桥杯预赛 JAVA本科B组][马虎的算式]
- 第三届蓝桥杯预赛第九题——趣味算式
- 蓝桥杯 第三届C/C++预赛真题(2) 古堡算式(数学题)
- 算法笔记_201:第三届蓝桥杯软件类决赛真题(Java本科)
- 第五届蓝桥杯软件类省赛真题 Java本科A 李白打酒
- 算法笔记_200:第三届蓝桥杯软件类决赛真题(C语言本科)
- 第三届蓝桥杯java本科组第6题
- 蓝桥杯 第三届C/C++预赛真题(6) 大数乘法(数学题)
- 2013蓝桥杯Java本科预赛B组(1)
- 2014年第五届蓝桥杯预赛题目JAVA软件开发高职高专组马虎的算式
- [JAVA][2013蓝桥杯预赛 JAVA本科B组][黄金连分数]
- 2012年第三届蓝桥杯C/C++本科组真题训练(一)(2017.2.6)