显然a应当大于0,除此以外似乎只能暴力搜索。共有不超过$\binom{9}{4}\times 4!$种数字排列、$4^3$种运算符选择、和$3\times 2$种运算顺序,总计算量大约是百万级, 结果是$1258$,对应的可连续表达的数最大是51。
注:以下为Python3代码,因代码中需要使用Python3整数除法的新特性。
import itertools
m=0
r=""
for w in itertools.combinations(list("123456789"),4):
t=set()
for a,b,c,d in itertools.permutations(list(w)):
for x,y,z in itertools.product(["+","-","*","/"],repeat=3):
for s in ["(("+a+x+b+")"+y+c+")"+z+d,"("+a+x+b+")"+y+"("+c+z+d+")","("+a+x+"("+b+y+c+"))"+z+d,a+x+"(("+b+y+c+")"+z+d+")","("+a+x+b+")"+y+"("+c+z+d+")",a+x+"("+b+y+"("+c+z+d+"))"]:
try:
q=1.0*eval(s)
if q>0 and q.is_integer():
t.add(int(q))
except:
continue
p=sorted(list(t))
i=0
while i < len(p) and p[i]==i+1:
i+=1
if i>m:
m=i
r="".join(sorted([a,b,c,d]))
print(r,m)
|