今天在微信上推送一道题如下。
题目:1,2,3,4,5,6,7,8,9 九个数按照顺序构成一个等式,结果=100
用1,2,3,4,5,6,7,8,9九个数按照顺序构成一个等式,结果为100,运算符随便用,数字可拼接(比如234),但必须保持1-9的顺序不能乱
很有兴趣,尝试了下,不怎么难。
发现如果题目改成
题目:1,2,3,4,5,6,7,8,9 九个数按照顺序构成一个等式,结果=100
用1,2,3,4,5,6,7,8,9九个数按照顺序构成一个等式,结果为100,运算符随便用,数字可拼接(比如234),但必须保持1-9的顺序不能乱。
求最多有多少组解?求花费最少的时间求出最多组解?
2014.9.23
如果按照我所出的题目来算,这题目就非常有意思了。
抛砖引玉:
-
import time
-
a = ['1','2','3','4','5','6','7','8','9']
-
b = ['+','-','*','/','%','&','^','|','','(',')']
-
start = time.time()
-
l = []
-
s = ''
-
count = 0
-
sum = 0
-
no = 0
-
for a1 in b:
-
for a2 in b:
-
for a3 in b:
-
for a4 in b:
-
for a5 in b:
-
for a6 in b:
-
for a7 in b:
-
for a8 in b:
-
try:
-
s = '1'+a1+'2'+a2+'3'+a3+'4'+a4+'5'+a5+'6'+a6+'7'+a7+'8'+a8+'9'
-
if count % 100000 == 0:
-
print count
-
print sum
-
print '------------'
-
if eval(s) == 100:
-
#print s+'=100'
-
sum += 1
-
count += 1
-
except:
-
no += 1
-
print count
-
print sum
-
print no
-
print time.time() - start
欢迎大家来尝试,讨论
提供下大体的方向。
1,生成字符串的算法
2,多线程调用
3,等等
2014.9.24
判断类型如下
-
if ')' not in a1 and '(' not in a8 and len(t_re.findall(s))%2 == 0:
------------
65200000
18143218
0.278270214724
4495
670.164999962
------------
阅读(1621) | 评论(0) | 转发(0) |