一兄弟读小学三年级孙子遇到算术难题,求教于我这大学生。如下图:
该题虽然可以推理和心算推出,闲着也是闲着,编个小程序玩玩。
import itertools as it
wt="1345689"
def js(x2,x1,x0):#判别x2,x1,x0是否为答案。
x5=(x2*100+x1*10+x0)*x0
x5_s=str(x5)
if not len(x5_s)==4:return(False)
x_l=[str(x2),str(x1),str(x0)]
for x_i in x5_s:
if (x_i in wt) and (x_i not in x_l):
x_l.append(x_i)
if len(x_l)==7:
return(True)
else:
return(False)
def pl2wt(wt):#获取wt数字的长度为2的排列序列。
jglist=[]
for e in it.permutations(wt, 2):
jglist.append(e)
return jglist
for x in wt:
x0=int(x)
x5=wt.replace(x,"")
x5list=pl2wt(x5)
for y in x5list:
x2=int(y[0])
x1=int(y[1])
if js(x2,x1,x0):
print("ok",str(x2*100+x1*10+x0)+"*"+str(x0)+"="+str((x2*100+x1*10+x0)*x0))
显示结果:ok 954*4=3816