前提:0不能作为数字开头
算法:利用Python中的全排列函数,取0-9中的8个数作为send+more=money中八个不同字母(该表达式包含相同字母例如o,m,n,e),判断这八个字母组成的表达式是否正确(等号是否成立),利用Python中的eval函数(在eval参数中的“=”改成“==”让其变成布尔型),判断0是否开头只要判断这些字符(“send+more==money”)长度是否等于16,少于16都是因为开头出现0然后被忽略了。
实现:
list1=[(str)((int)(s+e+n+d))+"+"+(str)((int)(m+o+r+e))+"=="+(str)((int)(m+o+n+e+y)) for s,e,n,d,m,o,r,y in permutations('0123456789', 8)]
for i in list1:
if len(i)==16 and eval(i):print ("%s" % (i))
测试结果:
9567+1085==10652
【转载请注明出处!】