移動一根火柴使等式成立這麼經典的題目網絡上卻搜索不到系統的內容和解題方法,我決定來做一下

題目設定:
移動一根火柴使等式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
數字變化集合
#增加一根火柴
digit_addone={
"0":[8],
"1":[7],
"2":[],
"3":[9],
"4":[],
"5":[6,9],
"6":[8],
"7":[],
"8":[],
"9":[8]
}
#減少一根火柴
digit_removeone={
"0":[],
"1":[],
"3":[],
"5":[],
"6":[5],
"7":[1],
"8":[0,6,9],
"9":[3,5]
#自身移動一根火柴
digit_moveone={
"0":[6,9],
"2":[3],
"3":[2,5],
"5":[3],
"6":[0,9],
"9":[0,6]
digit_operator={
"+":["-"],
"-":["+"]
將所有的變化組合列出,移動後仍然是等式的單獨記錄下來
轉換格式,key為不等式,value為答案集合,最終json數據為
{
"6+0=0": [
"0+0=0",
"6+0=6"
],
"9+0=0": [
"9+0=9"
"0+6=0": [
"0+6=6"
]
最終結果:
100內的加減法,移動一根火柴使等式成立的題目約11萬個。
10以內的加減法結果有:
equality:遍歷出的可移動等式,109個
inequality:移動一根火柴可以生成的不等式,778個,625個不重複
equation:移動一根火柴生成的等式26個