7个8如何(加,减,乘,除)算出等于2000

搜吃搜玩 2011-12-02 01:15:53
今天23点多的时候准备睡觉了,谁知无聊的时候看到这样一道题(如题),开始觉得还挺简单的,谁知道1点多了还没做出来,希望大神出来帮帮

下面这是我写的(不能优先计算,只能从头算到尾)

package Test;

public class test {

public static void main(String[] args) {
for(int x1=1;x1<4;x1++){
for(int x2=1;x2<4;x2++){
for(int x3=1;x3<4;x3++){
for(int x4=1;x4<4;x4++){
for(int x5=1;x5<4;x5++){
for(int x6=1;x6<4;x6++){
s(x1,x2,x3,x4,x5,x6);
}
}
}
}
}
}
}
public static void s(int x1,int x2,int x3,int x4,int x5,int x6){
double sum = 8;
sum = s1(sum, x1);
sum = s1(sum, x2);
sum = s1(sum, x3);
sum = s1(sum, x4);
sum = s1(sum, x5);
sum = s1(sum, x6);
if (sum==200) {
System.out.println(8+" "+y(x1)+" "+8+" "+y(x2)+" "+8+" "+y(x3)+" "+8+" "+y(x4)+" "+8+" "+y(x5)+" "+8+" "+y(x6)+" "+8);
}
}

public static double s1(double sum,int x){
switch (x) {
case 1:
sum +=8;
break;
case 2:
sum -=8;
break;
case 3:
sum *=8;
break;
case 4:
sum /=8;
break;
}
return sum;
}
public static String y(int i){
switch (i) {
case 1:
return "+";
//break;
case 2:
return "-";
//break;
case 3:
return "*";
//break;
case 4:
return "/";
//break;
}
return null;
}
}



运行结果:
8 + 8 + 8 + 8 - 8 * 8 + 8
8 + 8 + 8 - 8 + 8 * 8 + 8
8 + 8 + 8 * 8 + 8 + 8 - 8
8 + 8 + 8 * 8 + 8 - 8 + 8
8 + 8 + 8 * 8 - 8 + 8 + 8
8 + 8 - 8 + 8 + 8 * 8 + 8
8 - 8 + 8 + 8 + 8 * 8 + 8
...全文
618 26 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
kolnick 2011-12-03
  • 打赏
  • 举报
回复
你们括号还没用上呢!!!
南老頭 2011-12-02
  • 打赏
  • 举报
回复
路过算了。。
龙腾冰 2011-12-02
  • 打赏
  • 举报
回复
到现在还不明白是算200呢。还是算2000呢啊
休谱诺斯 2011-12-02
  • 打赏
  • 举报
回复
搜吃搜玩 2011-12-02
  • 打赏
  • 举报
回复
结果:
8+8*8+8*8+8*8=200
8*8+8+8*8+8*8=200
8*8+8*8+8+8*8=200
8*8+8*8+8*8+8=200
搜吃搜玩 2011-12-02
  • 打赏
  • 举报
回复

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>弹出消息框</title>
<script type="text/javascript">
function show1(){
for(var x1=1;x1<=4;x1++){
for(var x2=1;x2<=4;x2++){
for(var x3=1;x3<=4;x3++){
for(var x4=1;x4<=4;x4++){
for(var x5=1;x5<=4;x5++){
for(var x6=1;x6<=4;x6++){
var str="8"+show(x1)+"8"+show(x2)+"8"+show(x3)+"8"+show(x4)+"8"+show(x5)+"8"+show(x6)+"8";
var sum = eval(str);
//总和等于多少
if(sum==200){
document.write(str+"="+eval(sum)+"<br />");
}
}
}
}
}
}
}
}
</script>

<script type="text/javascript">
function show(a){
switch (a) {
case 1:
return ("+");
//break;
case 2:
return ("-");
//break;
case 3:
return ("*");
//break;
case 4:
return ("/");
//break;
}
return null;
}
</script>
</head>

<body onload="show1()">

</body>
</html>

wjm9855 2011-12-02
  • 打赏
  • 举报
回复
新人报道,路过,看过,回复过。
搜吃搜玩 2011-12-02
  • 打赏
  • 举报
回复
这个题是我在百度知道上看到的(估计是无聊人问的根本就没有等于2000这种可能性),这个题我做出来了,不过是用javascript做的,下面帖源码
xierong2011 2011-12-02
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 gavin_ts 的回复:]

引用 6 楼 zyc13701469860 的回复:
引用 5 楼 trocp 的回复:

引用 4 楼 ilyysys 的回复:




这头像,够丑的


程序猿~~

+1
[/Quote]

猿程序! 呵呵
wang7535067 2011-12-02
  • 打赏
  • 举报
回复
算法,
安卓机器人 2011-12-02
  • 打赏
  • 举报
回复
算法学的不好,膜拜一下大婶们
arikara 2011-12-02
  • 打赏
  • 举报
回复
递归算法,不过还是有够累的
2个控制循环,一个算法次数的控制,一个是加减乘除的控制
循环中调用该循环,当算法次数==7的时候,属性sum=2000,这时判断是不是sum==0,是打印跳出循环,不是也跳出循环

我嘞个去 2011-12-02
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 zyc13701469860 的回复:]
引用 5 楼 trocp 的回复:

引用 4 楼 ilyysys 的回复:




这头像,够丑的


程序猿~~
[/Quote]
+1
Mourinho 2011-12-02
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 trocp 的回复:]

引用 4 楼 ilyysys 的回复:




这头像,够丑的
[/Quote]

程序猿~~
oO临时工Oo 2011-12-02
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 ilyysys 的回复:]


[/Quote]

这头像,够丑的
噢噢噢噢 2011-12-02
  • 打赏
  • 举报
回复
7个8怎样加减除都不会得2000,所以至少有一个乘法运算,故题目转换为6个8怎样得到250
6个8怎样加减除都不会得250,所以题目转换为5个8怎样得到31.25
。。。不会了
oO临时工Oo 2011-12-02
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 merlin_q 的回复:]

从头算到尾 还要加上不看运算优先级的 看了一下是200,应该是(8+8+8+8-8)*8+8引用 1 楼 trocp 的回复:

引用楼主 qq136185204 的回复:
运行结果:
8 + 8 + 8 + 8 - 8 * 8 + 8
8 + 8 + 8 - 8 + 8 * 8 + 8
8 + 8 + 8 * 8 + 8 + 8 - 8
8 + 8 + 8 * 8 + 8 - ……
[/Quote]

嗯,你太有才了
merlin_q 2011-12-02
  • 打赏
  • 举报
回复
从头算到尾 还要加上不看运算优先级的 看了一下是200,应该是(8+8+8+8-8)*8+8[Quote=引用 1 楼 trocp 的回复:]

引用楼主 qq136185204 的回复:
运行结果:
8 + 8 + 8 + 8 - 8 * 8 + 8
8 + 8 + 8 - 8 + 8 * 8 + 8
8 + 8 + 8 * 8 + 8 + 8 - 8
8 + 8 + 8 * 8 + 8 - 8 + 8
8 + 8 + 8 * 8 - 8 + 8 + 8
8 + 8 - 8 + 8 + 8 * 8 + 8
8 - 8 +……
[/Quote]
oO临时工Oo 2011-12-02
  • 打赏
  • 举报
回复
[Quote=引用楼主 qq136185204 的回复:]
运行结果:
8 + 8 + 8 + 8 - 8 * 8 + 8
8 + 8 + 8 - 8 + 8 * 8 + 8
8 + 8 + 8 * 8 + 8 + 8 - 8
8 + 8 + 8 * 8 + 8 - 8 + 8
8 + 8 + 8 * 8 - 8 + 8 + 8
8 + 8 - 8 + 8 + 8 * 8 + 8
8 - 8 + 8 + 8 + 8 * 8 + 8
[/Quote]

你这个怎么算也得不到2000啊,就算你标题错了,
怎么算也不会是200

难倒是我理解错了?
噢噢噢噢 2011-12-02
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 babyboy9685 的回复:]

7个8 怎么加减 也到 不了2000 必定有乘法,然而你这里只能用8 所以 这个乘以8 一定可以提出来
就是
6个8 算出 250

以此类推

5 个8 算出31.25

只用8要出小数 必定 要用除法 所了 就是4个8 算出250

这样推到 最后 7个8 不可能算出2000
[/Quote]
呵呵,有道理,楼主在哪看到的题目?有答案吗?
加载更多回复(6)

62,634

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧