贴说网 > 杂谈 > 正文

​移动一根火柴益智题目

2025-04-16 15:09 来源:贴说网 点击:124

移动一根火柴益智题目

移动一根火柴使等式成立这么经典的题目网络上却搜索不到系统的内容和解题方法,我决定来做一下

题目设定:

移动一根火柴使等式A±B=C成立,其中A、B、C大于0小于100,只能在

1、列出所有的可以移动一根火柴使等式成立的等式,并给出答案

2、找出所有2种及以上答案的等式

3、找出所有移动一根火柴仍然是等式的等式

解题思路:

数字是由7根火柴组成,移动的方法有三种,1.增加一根,2.减少一根,3.自身移动一根。加减号有两种移动方法,加号减少一根,减号增加一根。组合起来一个等式共有12种变换方法。

使用逆向反推法,先列出所有的等式,然后将移动方法组合在一起,即可得出所有的可移动一根火柴使等式成立的等式。

注意:其中有可能组成移动一根仍然是等式的等式。

用python程序遍历出所有100以内的加减法

#所有的加法等式
for a in range(0,100):
for b in range(0,100-a):
c = a+b
equality = "%d-%d=%d" %(a,b,c)
#所有的减法等式
for a in range(0,10):
 for b in range(0,a+1):
 c = a-b
 equality = "%d-%d=%d" %(a,b,c)

数字变化集合

#增加一根火柴
digit_addone={
"0":[8],
"1":[7],
"2":[],
"3":[9],
"4":[],
"5":[6,9],
"6":[8],
"7":[],
"8":[],
"9":[8]
}
#减少一根火柴
digit_removeone={
"0":[],
"1":[],
"2":[],
"3":[],
"4":[],
"5":[],
"6":[5],
"7":[1],
"8":[0,6,9],
"9":[3,5]
}
#自身移动一根火柴
digit_moveone={
"0":[6,9],
"1":[],
"2":[3],
"3":[2,5],
"4":[],
"5":[3],
"6":[0,9],
"7":[],
"8":[],
"9":[0,6]
}
digit_operator={
"+":["-"],
"-":["+"]
}

将所有的变化组合列出,移动后仍然是等式的单独记录下来

转换格式,key为不等式,value为答案集合,最终json数据为

{
"6+0=0": [
"0+0=0",
"6+0=6"
],
"9+0=0": [
"0+0=0",
"9+0=9"
],
"0+6=0": [
"0+0=0",
"0+6=6"
]
}

最终结果:

100内的加减法,移动一根火柴使等式成立的题目约11万个。

10以内的加减法结果有:

equality:遍历出的可移动等式,109个

inequality:移动一根火柴可以生成的不等式,778个,625个不重复

equation:移动一根火柴生成的等式26个