巅峰赛#19 T6 python暴力题解
2025-03-31 22:54:57
发布于:浙江
是的,孩子们,python 巅峰赛#19 T6 纯暴力(
先说一下性能,极限优化之后10个测试点最大耗时320ms,内存占用最大30MB,总计运行时间:1505 ms 占用内存:193.60MB
第一版能过的代码
运行时间:4452 ms
占用内存:131.50MB:
import sys
input = sys.stdin.readline
raw_mapping = ['a+b+c+d', 'a+b+c-d', '((a+b)+c)*d', '(a+b)+(c*d)', 'a+((b+c)*d)', 'a+b-c+d', 'a+b-c-d', '((a+b)-c)*d', '(a+b)-(c*d)', 'a+((b-c)*d)', '((a+b)*c)+d', '(a+(b*c))+d', '(a+b)*(c+d)', 'a+(b*(c+d))', '((a+b)*c)-d', '(a+(b*c))-d', '(a+b)*(c-d)', 'a+(b*(c-d))', '((a+b)*c)*d', '(a+(b*c))*d', 'a+((b*c)*d)', 'a-b+c+d', 'a-b+c-d', '((a-b)+c)*d', '(a-(b+c))*d', '(a-b)+(c*d)', 'a-((b+c)*d)', 'a-(b+(c*d))', 'a-b-c+d', 'a-b-c-d', 'a-((b-c)*d)', '((a-b)*c)+d', '(a-(b*c))+d', '(a-b)*(c+d)', 'a-((b*c)+d)', 'a-(b*(c+d))', '((a-b)*c)-d', '(a-b)*(c-d)', 'a-(b*(c-d))', '((a-b)*c)*d', '(a-(b*c))*d', 'a-((b*c)*d)', '((a*b)+c)+d', '(a*(b+c))+d', 'a*((b+c)+d)', '((a*b)+c)-d', '(a*(b+c))-d', 'a*((b+c)-d)', '((a*b)+c)*d', '(a*(b+c))*d', '(a*b)+(c*d)', 'a*(b+(c*d))', '((a*b)-c)+d', '(a*(b-c))+d', '(a*b)-(c+d)', 'a*((b-c)+d)', 'a*(b-(c+d))', '(a*(b-c))-d', '((a*b)-c)*d', '(a*(b-c))*d', '(a*b)-(c*d)', 'a*(b-(c*d))', '((a*b)*c)+d', '(a*b)*(c+d)', 'a*((b*c)+d)', '((a*b)*c)-d', '(a*b)*(c-d)', 'a*((b*c)-d)', '((a*b)*c)*d', '((a+b)+d)*c', 'a+((b+d)*c)', '((a+b)-d)*c', 'a+((b-d)*c)', '((a+b)*d)+c', '(a+(b*d))+c', '((a+b)*d)-c', '(a+(b*d))-c', '(a+b)*(d-c)', '(a+(b*d))*c', '((a-b)+d)*c', '(a-(b+d))*c', 'a-((b+d)*c)', 'a-((b-d)*c)', '((a-b)*d)+c', '(a-(b*d))+c', 'a-((b*d)+c)', '((a-b)*d)-c', '(a-b)*(d-c)', '(a-(b*d))*c', '(a*(b+d))+c', '(a*(b+d))-c', '((a*b)+d)*c', '(a*(b+d))*c', '(a*(b-d))+c', '(a*(b-d))-c', '((a*b)-d)*c', '(a*(b-d))*c', '((a*b)*d)+c', 'a*((b*d)+c)', '((a*b)*d)-c', '(a*b)*(d-c)', 'a*((b*d)-c)', '((a+c)*b)+d', '(a+c)*(b+d)', '((a+c)*b)-d', '(a+c)*(b-d)', '((a+c)*b)*d', '((a-c)*b)+d', '(a-c)*(b+d)', '((a-c)*b)-d', '(a-c)*(b-d)', '((a-c)*b)*d', '((a*c)+b)+d', '((a*c)+b)-d', '((a*c)+b)*d', '(a*c)+(b*d)', '((a*c)-b)+d', '(a*(c-b))+d', '(a*c)-(b+d)', 'a*((c-b)+d)', 'a*(c-(b+d))', '(a*(c-b))-d', '((a*c)-b)*d', '(a*(c-b))*d', '(a*c)-(b*d)', 'a*(c-(b*d))', '((a+c)+d)*b', '((a+c)-d)*b', '((a+c)*d)+b', '((a+c)*d)-b', '(a+c)*(d-b)', '(a+(c*d))*b', '((a-c)+d)*b', '(a-(c+d))*b', '((a-c)*d)+b', '((a-c)*d)-b', '(a-c)*(d-b)', '(a-(c*d))*b', '(a*(c+d))+b', '(a*(c+d))-b', '((a*c)+d)*b', '(a*(c-d))+b', '(a*(c-d))-b', '((a*c)-d)*b', '((a*c)*d)+b', '((a*c)*d)-b', '(a*c)*(d-b)', 'a*((c*d)-b)', '((a+d)*b)+c', '(a+d)*(b+c)', '((a+d)*b)-c', '(a+d)*(b-c)', '((a+d)*b)*c', '((a-d)*b)+c', '(a-d)*(b+c)', '((a-d)*b)-c', '(a-d)*(b-c)', '((a-d)*b)*c', '((a*d)+b)+c', '((a*d)+b)-c', '((a*d)+b)*c', '(a*d)+(b*c)', '((a*d)-b)+c', '(a*(d-b))+c', '(a*d)-(b+c)', 'a*(d-(b+c))', '(a*(d-b))-c', '((a*d)-b)*c', '(a*d)-(b*c)', 'a*(d-(b*c))', '((a+d)*c)+b', '((a+d)*c)-b', '(a+d)*(c-b)', '((a-d)*c)+b', '((a-d)*c)-b', '(a-d)*(c-b)', '((a*d)+c)*b', '(a*(d-c))+b', '(a*(d-c))-b', '((a*d)-c)*b', 'b-a+c+d', 'b-a+c-d', '((b-a)+c)*d', '(b-(a+c))*d', '(b-a)+(c*d)', 'b-((a+c)*d)', 'b-(a+(c*d))', 'b-a-c+d', 'b-a-c-d', 'b-((a-c)*d)', '((b-a)*c)+d', '(b-(a*c))+d', '(b-a)*(c+d)', 'b-((a*c)+d)', 'b-(a*(c+d))', '((b-a)*c)-d', '((b-a)*c)*d', '(b-(a*c))*d', 'b-((a*c)*d)', '((b-a)+d)*c', '(b-(a+d))*c', 'b-((a+d)*c)', 'b-((a-d)*c)', '((b-a)*d)+c', '(b-(a*d))+c', 'b-((a*d)+c)', '((b-a)*d)-c', '(b-(a*d))*c', '((b*c)-a)+d', '(b*(c-a))+d', '(b*c)-(a+d)', 'b*((c-a)+d)', 'b*(c-(a+d))', '(b*(c-a))-d', '((b*c)-a)*d', '(b*(c-a))*d', '(b*c)-(a*d)', 'b*(c-(a*d))', '((b+c)*d)-a', '(b+c)*(d-a)', '((b-c)*d)-a', '(b*(c+d))-a', '(b*(c-d))-a', '((b*c)*d)-a', '(b*c)*(d-a)', 'b*((c*d)-a)', '((b*d)-a)+c', '(b*(d-a))+c', '(b*d)-(a+c)', 'b*(d-(a+c))', '(b*(d-a))-c', '((b*d)-a)*c', '(b*d)-(a*c)', 'b*(d-(a*c))', '((b+d)*c)-a', '(b+d)*(c-a)', '((b-d)*c)-a', '(b*(d-c))-a', '(c-(a+b))*d', 'c-((a+b)*d)', 'c-(a+(b*d))', 'c-a-b+d', 'c-a-b-d', '(c-(a*b))+d', 'c-((a*b)+d)', 'c-(a*(b+d))', '(c-(a*b))*d', 'c-((a*b)*d)', 'c-((a+d)*b)', 'c-((a*d)+b)', '((c-a)*d)-b', '((c-b)*d)-a', '(c*d)-(a+b)', 'c*(d-(a+b))', '(c*(d-a))-b', '(c*d)-(a*b)', 'c*(d-(a*b))', '(c*(d-b))-a', 'd-((a+b)*c)', 'd-(a+(b*c))', 'd-a-b-c', 'd-((a*b)+c)', 'd-(a*(b+c))', 'd-((a*b)*c)', 'd-((a+c)*b)', 'd-((a*c)+b)']
mapping = []
for exp in raw_mapping:
mapping.append((exp, eval("lambda a, b, c, d: " + exp)))
n = int(input())
output_str = ""
for _ in range(n):
a, b, c, d = map(int, input().split())
for raw_cmd, cmd in mapping:
# res = eval(cmd, {'a': a, 'b': b, 'c': c, 'd': d})
res = cmd(a, b, c, d)
if res % 24 == 0:
output_str += raw_cmd.replace('a', str(a)).replace('b', str(b)).replace('c', str(c)).replace('d', str(d)) + "\n"
break
else:
output_str += 'Impossible\n'
sys.stdout.write(output_str)
第二版能过的代码
运行时间:4181 ms
占用内存:95.46MB:
import sys
mapping = [(exp, eval("lambda a, b, c, d: " + exp)) for exp in ['a+b+c+d', 'a+b+c-d', '((a+b)+c)*d', '(a+b)+(c*d)', 'a+((b+c)*d)', 'a+b-c+d', 'a+b-c-d', '((a+b)-c)*d', '(a+b)-(c*d)', 'a+((b-c)*d)', '((a+b)*c)+d', '(a+(b*c))+d', '(a+b)*(c+d)', 'a+(b*(c+d))', '((a+b)*c)-d', '(a+(b*c))-d', '(a+b)*(c-d)', 'a+(b*(c-d))', '((a+b)*c)*d', '(a+(b*c))*d', 'a+((b*c)*d)', 'a-b+c+d', 'a-b+c-d', '((a-b)+c)*d', '(a-(b+c))*d', '(a-b)+(c*d)', 'a-((b+c)*d)', 'a-(b+(c*d))', 'a-b-c+d', 'a-b-c-d', 'a-((b-c)*d)', '((a-b)*c)+d', '(a-(b*c))+d', '(a-b)*(c+d)', 'a-((b*c)+d)', 'a-(b*(c+d))', '((a-b)*c)-d', '(a-b)*(c-d)', 'a-(b*(c-d))', '((a-b)*c)*d', '(a-(b*c))*d', 'a-((b*c)*d)', '((a*b)+c)+d', '(a*(b+c))+d', 'a*((b+c)+d)', '((a*b)+c)-d', '(a*(b+c))-d', 'a*((b+c)-d)', '((a*b)+c)*d', '(a*(b+c))*d', '(a*b)+(c*d)', 'a*(b+(c*d))', '((a*b)-c)+d', '(a*(b-c))+d', '(a*b)-(c+d)', 'a*((b-c)+d)', 'a*(b-(c+d))', '(a*(b-c))-d', '((a*b)-c)*d', '(a*(b-c))*d', '(a*b)-(c*d)', 'a*(b-(c*d))', '((a*b)*c)+d', '(a*b)*(c+d)', 'a*((b*c)+d)', '((a*b)*c)-d', '(a*b)*(c-d)', 'a*((b*c)-d)', '((a*b)*c)*d', '((a+b)+d)*c', 'a+((b+d)*c)', '((a+b)-d)*c', 'a+((b-d)*c)', '((a+b)*d)+c', '(a+(b*d))+c', '((a+b)*d)-c', '(a+(b*d))-c', '(a+b)*(d-c)', '(a+(b*d))*c', '((a-b)+d)*c', '(a-(b+d))*c', 'a-((b+d)*c)', 'a-((b-d)*c)', '((a-b)*d)+c', '(a-(b*d))+c', 'a-((b*d)+c)', '((a-b)*d)-c', '(a-b)*(d-c)', '(a-(b*d))*c', '(a*(b+d))+c', '(a*(b+d))-c', '((a*b)+d)*c', '(a*(b+d))*c', '(a*(b-d))+c', '(a*(b-d))-c', '((a*b)-d)*c', '(a*(b-d))*c', '((a*b)*d)+c', 'a*((b*d)+c)', '((a*b)*d)-c', '(a*b)*(d-c)', 'a*((b*d)-c)', '((a+c)*b)+d', '(a+c)*(b+d)', '((a+c)*b)-d', '(a+c)*(b-d)', '((a+c)*b)*d', '((a-c)*b)+d', '(a-c)*(b+d)', '((a-c)*b)-d', '(a-c)*(b-d)', '((a-c)*b)*d', '((a*c)+b)+d', '((a*c)+b)-d', '((a*c)+b)*d', '(a*c)+(b*d)', '((a*c)-b)+d', '(a*(c-b))+d', '(a*c)-(b+d)', 'a*((c-b)+d)', 'a*(c-(b+d))', '(a*(c-b))-d', '((a*c)-b)*d', '(a*(c-b))*d', '(a*c)-(b*d)', 'a*(c-(b*d))', '((a+c)+d)*b', '((a+c)-d)*b', '((a+c)*d)+b', '((a+c)*d)-b', '(a+c)*(d-b)', '(a+(c*d))*b', '((a-c)+d)*b', '(a-(c+d))*b', '((a-c)*d)+b', '((a-c)*d)-b', '(a-c)*(d-b)', '(a-(c*d))*b', '(a*(c+d))+b', '(a*(c+d))-b', '((a*c)+d)*b', '(a*(c-d))+b', '(a*(c-d))-b', '((a*c)-d)*b', '((a*c)*d)+b', '((a*c)*d)-b', '(a*c)*(d-b)', 'a*((c*d)-b)', '((a+d)*b)+c', '(a+d)*(b+c)', '((a+d)*b)-c', '(a+d)*(b-c)', '((a+d)*b)*c', '((a-d)*b)+c', '(a-d)*(b+c)', '((a-d)*b)-c', '(a-d)*(b-c)', '((a-d)*b)*c', '((a*d)+b)+c', '((a*d)+b)-c', '((a*d)+b)*c', '(a*d)+(b*c)', '((a*d)-b)+c', '(a*(d-b))+c', '(a*d)-(b+c)', 'a*(d-(b+c))', '(a*(d-b))-c', '((a*d)-b)*c', '(a*d)-(b*c)', 'a*(d-(b*c))', '((a+d)*c)+b', '((a+d)*c)-b', '(a+d)*(c-b)', '((a-d)*c)+b', '((a-d)*c)-b', '(a-d)*(c-b)', '((a*d)+c)*b', '(a*(d-c))+b', '(a*(d-c))-b', '((a*d)-c)*b', 'b-a+c+d', 'b-a+c-d', '((b-a)+c)*d', '(b-(a+c))*d', '(b-a)+(c*d)', 'b-((a+c)*d)', 'b-(a+(c*d))', 'b-a-c+d', 'b-a-c-d', 'b-((a-c)*d)', '((b-a)*c)+d', '(b-(a*c))+d', '(b-a)*(c+d)', 'b-((a*c)+d)', 'b-(a*(c+d))', '((b-a)*c)-d', '((b-a)*c)*d', '(b-(a*c))*d', 'b-((a*c)*d)', '((b-a)+d)*c', '(b-(a+d))*c', 'b-((a+d)*c)', 'b-((a-d)*c)', '((b-a)*d)+c', '(b-(a*d))+c', 'b-((a*d)+c)', '((b-a)*d)-c', '(b-(a*d))*c', '((b*c)-a)+d', '(b*(c-a))+d', '(b*c)-(a+d)', 'b*((c-a)+d)', 'b*(c-(a+d))', '(b*(c-a))-d', '((b*c)-a)*d', '(b*(c-a))*d', '(b*c)-(a*d)', 'b*(c-(a*d))', '((b+c)*d)-a', '(b+c)*(d-a)', '((b-c)*d)-a', '(b*(c+d))-a', '(b*(c-d))-a', '((b*c)*d)-a', '(b*c)*(d-a)', 'b*((c*d)-a)', '((b*d)-a)+c', '(b*(d-a))+c', '(b*d)-(a+c)', 'b*(d-(a+c))', '(b*(d-a))-c', '((b*d)-a)*c', '(b*d)-(a*c)', 'b*(d-(a*c))', '((b+d)*c)-a', '(b+d)*(c-a)', '((b-d)*c)-a', '(b*(d-c))-a', '(c-(a+b))*d', 'c-((a+b)*d)', 'c-(a+(b*d))', 'c-a-b+d', 'c-a-b-d', '(c-(a*b))+d', 'c-((a*b)+d)', 'c-(a*(b+d))', '(c-(a*b))*d', 'c-((a*b)*d)', 'c-((a+d)*b)', 'c-((a*d)+b)', '((c-a)*d)-b', '((c-b)*d)-a', '(c*d)-(a+b)', 'c*(d-(a+b))', '(c*(d-a))-b', '(c*d)-(a*b)', 'c*(d-(a*b))', '(c*(d-b))-a', 'd-((a+b)*c)', 'd-(a+(b*c))', 'd-a-b-c', 'd-((a*b)+c)', 'd-(a*(b+c))', 'd-((a*b)*c)', 'd-((a+c)*b)', 'd-((a*c)+b)']]
for _ in range(int(input())):
a, b, c, d = map(int, sys.stdin.readline().split())
for raw_cmd, cmd in mapping:
if cmd(a, b, c, d) % 24 == 0:
print(raw_cmd.replace('a', str(a)).replace('b', str(b)).replace('c', str(c)).replace('d', str(d)))
break
else:
print('Impossible')
第三版能过的代码
运行时间:2837 ms
占用内存:111.36MB:
import sys
exps = ['a+b+c+d', 'a+b+c-d', '((a+b)+c)*d', '(a+b)+(c*d)', 'a+((b+c)*d)', 'a+b-c+d', 'a+b-c-d', '((a+b)-c)*d', '(a+b)-(c*d)', 'a+((b-c)*d)', '((a+b)*c)+d', '(a+(b*c))+d', '(a+b)*(c+d)', 'a+(b*(c+d))', '((a+b)*c)-d', '(a+(b*c))-d', '(a+b)*(c-d)', 'a+(b*(c-d))', '((a+b)*c)*d', '(a+(b*c))*d', 'a+((b*c)*d)', 'a-b+c+d', 'a-b+c-d', '((a-b)+c)*d', '(a-(b+c))*d', '(a-b)+(c*d)', 'a-((b+c)*d)', 'a-(b+(c*d))', 'a-b-c+d', 'a-b-c-d', 'a-((b-c)*d)', '((a-b)*c)+d', '(a-(b*c))+d', '(a-b)*(c+d)', 'a-((b*c)+d)', 'a-(b*(c+d))', '((a-b)*c)-d', '(a-b)*(c-d)', 'a-(b*(c-d))', '((a-b)*c)*d', '(a-(b*c))*d', 'a-((b*c)*d)', '((a*b)+c)+d', '(a*(b+c))+d', 'a*((b+c)+d)', '((a*b)+c)-d', '(a*(b+c))-d', 'a*((b+c)-d)', '((a*b)+c)*d', '(a*(b+c))*d', '(a*b)+(c*d)', 'a*(b+(c*d))', '((a*b)-c)+d', '(a*(b-c))+d', '(a*b)-(c+d)', 'a*((b-c)+d)', 'a*(b-(c+d))', '(a*(b-c))-d', '((a*b)-c)*d', '(a*(b-c))*d', '(a*b)-(c*d)', 'a*(b-(c*d))', '((a*b)*c)+d', '(a*b)*(c+d)', 'a*((b*c)+d)', '((a*b)*c)-d', '(a*b)*(c-d)', 'a*((b*c)-d)', '((a*b)*c)*d', '((a+b)+d)*c', 'a+((b+d)*c)', '((a+b)-d)*c', 'a+((b-d)*c)', '((a+b)*d)+c', '(a+(b*d))+c', '((a+b)*d)-c', '(a+(b*d))-c', '(a+b)*(d-c)', '(a+(b*d))*c', '((a-b)+d)*c', '(a-(b+d))*c', 'a-((b+d)*c)', 'a-((b-d)*c)', '((a-b)*d)+c', '(a-(b*d))+c', 'a-((b*d)+c)', '((a-b)*d)-c', '(a-b)*(d-c)', '(a-(b*d))*c', '(a*(b+d))+c', '(a*(b+d))-c', '((a*b)+d)*c', '(a*(b+d))*c', '(a*(b-d))+c', '(a*(b-d))-c', '((a*b)-d)*c', '(a*(b-d))*c', '((a*b)*d)+c', 'a*((b*d)+c)', '((a*b)*d)-c', '(a*b)*(d-c)', 'a*((b*d)-c)', '((a+c)*b)+d', '(a+c)*(b+d)', '((a+c)*b)-d', '(a+c)*(b-d)', '((a+c)*b)*d', '((a-c)*b)+d', '(a-c)*(b+d)', '((a-c)*b)-d', '(a-c)*(b-d)', '((a-c)*b)*d', '((a*c)+b)+d', '((a*c)+b)-d', '((a*c)+b)*d', '(a*c)+(b*d)', '((a*c)-b)+d', '(a*(c-b))+d', '(a*c)-(b+d)', 'a*((c-b)+d)', 'a*(c-(b+d))', '(a*(c-b))-d', '((a*c)-b)*d', '(a*(c-b))*d', '(a*c)-(b*d)', 'a*(c-(b*d))', '((a+c)+d)*b', '((a+c)-d)*b', '((a+c)*d)+b', '((a+c)*d)-b', '(a+c)*(d-b)', '(a+(c*d))*b', '((a-c)+d)*b', '(a-(c+d))*b', '((a-c)*d)+b', '((a-c)*d)-b', '(a-c)*(d-b)', '(a-(c*d))*b', '(a*(c+d))+b', '(a*(c+d))-b', '((a*c)+d)*b', '(a*(c-d))+b', '(a*(c-d))-b', '((a*c)-d)*b', '((a*c)*d)+b', '((a*c)*d)-b', '(a*c)*(d-b)', 'a*((c*d)-b)', '((a+d)*b)+c', '(a+d)*(b+c)', '((a+d)*b)-c', '(a+d)*(b-c)', '((a+d)*b)*c', '((a-d)*b)+c', '(a-d)*(b+c)', '((a-d)*b)-c', '(a-d)*(b-c)', '((a-d)*b)*c', '((a*d)+b)+c', '((a*d)+b)-c', '((a*d)+b)*c', '(a*d)+(b*c)', '((a*d)-b)+c', '(a*(d-b))+c', '(a*d)-(b+c)', 'a*(d-(b+c))', '(a*(d-b))-c', '((a*d)-b)*c', '(a*d)-(b*c)', 'a*(d-(b*c))', '((a+d)*c)+b', '((a+d)*c)-b', '(a+d)*(c-b)', '((a-d)*c)+b', '((a-d)*c)-b', '(a-d)*(c-b)', '((a*d)+c)*b', '(a*(d-c))+b', '(a*(d-c))-b', '((a*d)-c)*b', 'b-a+c+d', 'b-a+c-d', '((b-a)+c)*d', '(b-(a+c))*d', '(b-a)+(c*d)', 'b-((a+c)*d)', 'b-(a+(c*d))', 'b-a-c+d', 'b-a-c-d', 'b-((a-c)*d)', '((b-a)*c)+d', '(b-(a*c))+d', '(b-a)*(c+d)', 'b-((a*c)+d)', 'b-(a*(c+d))', '((b-a)*c)-d', '((b-a)*c)*d', '(b-(a*c))*d', 'b-((a*c)*d)', '((b-a)+d)*c', '(b-(a+d))*c', 'b-((a+d)*c)', 'b-((a-d)*c)', '((b-a)*d)+c', '(b-(a*d))+c', 'b-((a*d)+c)', '((b-a)*d)-c', '(b-(a*d))*c', '((b*c)-a)+d', '(b*(c-a))+d', '(b*c)-(a+d)', 'b*((c-a)+d)', 'b*(c-(a+d))', '(b*(c-a))-d', '((b*c)-a)*d', '(b*(c-a))*d', '(b*c)-(a*d)', 'b*(c-(a*d))', '((b+c)*d)-a', '(b+c)*(d-a)', '((b-c)*d)-a', '(b*(c+d))-a', '(b*(c-d))-a', '((b*c)*d)-a', '(b*c)*(d-a)', 'b*((c*d)-a)', '((b*d)-a)+c', '(b*(d-a))+c', '(b*d)-(a+c)', 'b*(d-(a+c))', '(b*(d-a))-c', '((b*d)-a)*c', '(b*d)-(a*c)', 'b*(d-(a*c))', '((b+d)*c)-a', '(b+d)*(c-a)', '((b-d)*c)-a', '(b*(d-c))-a', '(c-(a+b))*d', 'c-((a+b)*d)', 'c-(a+(b*d))', 'c-a-b+d', 'c-a-b-d', '(c-(a*b))+d', 'c-((a*b)+d)', 'c-(a*(b+d))', '(c-(a*b))*d', 'c-((a*b)*d)', 'c-((a+d)*b)', 'c-((a*d)+b)', '((c-a)*d)-b', '((c-b)*d)-a', '(c*d)-(a+b)', 'c*(d-(a+b))', '(c*(d-a))-b', '(c*d)-(a*b)', 'c*(d-(a*b))', '(c*(d-b))-a', 'd-((a+b)*c)', 'd-(a+(b*c))', 'd-a-b-c', 'd-((a*b)+c)', 'd-(a*(b+c))', 'd-((a*b)*c)', 'd-((a+c)*b)', 'd-((a*c)+b)']
func_def_lines = ["def find_exp(a, b, c, d):"]
for i, exp in enumerate(exps):
line = f"if ({exp}) % 24 == 0:\n return {repr(exp)}"
if i > 0:
line = " el" + line
else:
line = " " + line
func_def_lines.append(line)
func_def_lines.append(" return None")
func_code = "\n".join(func_def_lines)
find_exp = None
# print(func_code)
exec(func_code)
num_test_cases = int(sys.stdin.readline())
for _ in range(num_test_cases):
a, b, c, d = map(int, sys.stdin.readline().split())
exp = find_exp(a, b, c, d)
if exp:
result_str = exp.replace('a', str(a)).replace('b', str(b)).replace('c', str(c)).replace('d', str(d))
print(result_str)
else:
print('Impossible')
第四版能过的代码:
运行时间:2619 ms
占用内存:113.58MB
从这里开始就开始使用提前编译的代码,以优化性能了
import sys
import lzma
func_code = b"\xfd7zXZ\x00\x00\x04\xe6\xd6\xb4F\x02\x00!\x01\x16\x00\x00\x00t/\xe5\xa3\xe03\x92\x05#]\x002\x19H\xffO\x00\xf6p\xf0{7\xe0\xa8\xc7:\xc0A\x1e\xa8\xec*KztS\x05\xa9\xf0\xd70\xe8#\x9c\xd6\xdf\x8a\x04\x81\xd7u\xc9Wv\xb37Z\x01\xcc\xb7\xba(@<\xfe\\Q(}\xe4\xe7\xd8\x04(9o=\xe7nd\xe1\x93\xd0\n\x07\xb5\xd7\tH\xe85\x13v\xffl\xc9H\xb7\xe2\xb3\xf8\xa1\xec\xfe\xc4\xbb,\x1c\x89\x0eR\x8a\x8c\x17\x9e\xd9\xb2,[\xc6\r*l\\\x07\xc7\xbb\xfab\xe5\x13\xb8]V)\x00\x84\x91\xdb2\xd4\xf0\xdd\x87\x17\x1c\xbaZL\x1c\x96\xeb\x9aL\xea\xf9\r\xc7+\xb1\xbcD\x0eL\xf7G\xb1\xbc\xdfw\x8em\x12\xd8\x84\xbf\xb8\x9f\x99\xc18\x12\xcf\x83\xf3\xfc6\xea\xf7z\xbfiJ\xd3\xa4\x17\xb3K\x1c\xb39r\xc0\xe1f\x86\xcf\x95)\\\x9f\xaf\x0b\x9e\xbeK\xda\x9dl\xdc\x136\xcbd\xa8\x8f\x1c\xb8\x89\xda\x08\xe8{Y\xe5\xf7\x1e\xfeL\xa6\x94V=:\x06[p1ng\xd1;\x1e\x13\xacY\x88)\xd9\x91\x8c\x8f\xfb\xd8\x95ib4VLy\xd5\xbb,\xd2Q\xae\xc1\xc4T\xcd?\n,\xa5\x9c\x8dAy\x04\xccB\xa1\x9a\xee\x99\xe2\xf1=\xda\xa7\xdd\xa1\x86\xbe\x02\x02E\xbe\x9c\x95\xa0\xd4\xddx\xfbh\xda\xac4\xe0\xb1s*>\xce|V|\x98\x8c\x15\xe5\x05\xe6'R\xde\xfbD\xe2\xe1\x0e\x81G\x14\xbcfW\x9d\x13\xe0Z\xba<G\xd5\xe2\xfb\xe9g\xcc\xa8-\x15\xb6\xdd\xca\xb3K\xd8\xc9\xe0\xb9\xe6]\xb9O\xbb18\xc8\x007\xca\x15\xd94\xc8\xc6\xea\xd3\x85\x82[\xb1\x96Ux\x8e\xae\x8c\xecD\xd8\x98\x1f\x97\xdb\xdb\xd9\x99\xeb\xfd\xe2\x15n\x16S{D\x9f\x90/Z\x95OC\x91\xd2\xb9\xfa,\xf4\xd1\xf6aBA\xf5\x83\x87$\x83\x94*\x18\x13\xfa\xfe\xac\xb1\xa0\xaf\x05 \xbe\xd0\xf4j_Q\xb3\x0f\xb5#H\x88\x05Y\xde\xb1\xb8\x8b\xc8\xbb\xd0+\xa1\xb14\xad\xf52<\x10>\xddz\xa9\xce\xfc\x0b\xcc\xb9-\xe8\x0b,\x87\xadm\x1bYN\x7f\xf1\x89\x80\t\xdc\xfa\x8d\xee\x85*\xb7\x14\x1b\xc0\x03\xb4\x02\xff\x8c/F\x8b\x89\xac\x8b\xa46Y\xea\x02t\xabW\xff$\x17\x83\xb9\xa9\x94\xfeaq\xb4\xf5\x15CX-[\x1b\xeb\xfd\xc7B\x1a\x11\x85v\x1aIH%\xbb]\xfa\x1dd\x0c\xcb\xb8\x85\xa1u:\x8f\xa8\xc6\xbcB\xaf \x80\xa6\xf2\x91\xb4\xe3\xd6\xf6j\x91\xc4\xc0\x14\xb2\\*\xa4{\xf0\xe6\xeb\xe1\xf4X~\x8eNe$\x8e\xb2\xdf\x03<\x05\xa6JoHk\xe7?\x9b9@b\xf0\xfa\x1eq\xb69Z\x19\x95\x90\x0c\x9f\x1f\xcd\xc8\x90@O\x9c\x81oT*I\xdd-\xe5\xfc\xc2Dv\xaf3\t\xd2\xea\x86\x12\xf0R\xaf\xdb\xf8\xc0\xfd\xecT\xae\xfd\xc84\x87\xc4\x92+\xd0\xdaS\x02\x10\nQ\x85\xddl\xd1\xe4Q,t\x86\xfbE\xde2\xbeL[\x8b\x13\x06\xc466\xefL\xafQ\xb0\xa3\xf9\x16`#QqJ\x9b\xa5\xad8*\xc0\x87\xc2o(\x8aBW\x91r_%\xd8-\xba\xe4\x8d\\\xa0\x1d\x89\xbe\x89\x87\xed\xd8\xf0\x03\xb5\x83\xda\xd3,\xb1\xc9vI\xc3\xe4\x89\x16\xbd\x1e\x0cv\x1c\xdf\xb0\xf3@\x1b\x1d;\xf9X\x0b\x8d%\x9f\xad9d\x14\x9b\x155\x98\x91\x99+\x08\xfb\xa0G4\xc6\x0b\xf2Ze\xe1\xffd\x04\xc2D\x19]\x92 W\xeeJ7ks\x94\x0c[\xea\xda\xcd\x80\x0b\xfcF\xb6/\x7f\x18\xc8L'\x99(\xad\xacT \xc8\x9a#\x07_/&\xdd\x83\xd2\x17\x1cq\x93g\x89\x15\x8d0z\xa8\xf1\x93\xb5\x81\xfdQ\xca`\xae\xecI\x05\xda\t\xfeG\x9cF\xda\xbd\xcb\xd0\xc1\x91\xabtDUS\rv\xc9\x06\xe7\x0e\xa1u\xabc\xe1S\xd7F-r\xed\xca\xb4+-t\x00\xa5\xda\xd6\x81v\rn\xca\x1a\x1b\xf5\x0e\x0e=\x9b\xd55QX\x88^\xaa\xd9\x85\xfbS\xb38\x1aNT\x8e\xbc;\x0fT\xf1\xad\xb2\nR-|\xa2\xba\xf0w\xde\xc1\xc9\x81\xef\xdc\x1dj?*\xe1\x1c\x93\xd5\xc2\xdf\xc25#\x90\x91[\x91\xf8\xc1\x84a\xf8\x9a\x8c\x838\xa7\xcd\xb9`8\x17\xfa\x13v\xc3-=}\xdf?f\xac\x02j\x9d\xd3\x13\xdb\xc5\xf3Jn\x0f\x9b\x9a\xa8\xa1\xec[>\x19e\x16$R\xb7\xda\xd3\xf2\x13n\x11W=\xd2\xbf\xf3m\xf3\xf2\x86\x87\xbc&\xbc`\x94g\x83h9\xb1yj\xbc\x9c\x1cR y?\xaa\xb8\xc8\xca\x16\xe9\xe8Z\xae\xb9\xdc\xc1\xad\x1f\xfc\xa1XH\x83A\xc4a\x8cUA\x0b7}\x0f>\x03^\xfd|\xeb\xef\xf0\x1f\xb7\x83\xa7\xb3\xe4\xea\xd3\xae\x9bw.\x94^P\x9e\xfe\xc9\x9dt!Z\xf9\xd61\xa6\x06\xdf\xef\xcc\xa7K\xb5\x9f\xd8Xx3,9\x8c|\xfa\x8d\x84\xa5<\xf2pV\x97\x13\xd5\t\xdcyol\xd0\xc0\x9b@~\xac\xbc\x1e\x8d#\xf0#5o\x10\xb3\xbf\x97\x81\xb2\x89\xeej\x16PO\xd2\x198\xa7\xc49\x13[\xb0\x1a\xc6C\xb3\xdb\xd7\xbe\xe0\xea\xfb\xc7\xcf\xd4M\xcc\xc9\xc1\xd1\xfb\xaa\xfa\xa9\xf8\xc6n-\\\x98\x17A\x990\xd9\x19\xf6\x01\xbdQ\xb6\xf4\xc1;p\xd4\xe9\x7f\xddYa<\x19\xd5\xd7\xad\xe9,Hz\xf1\x85\x1d5\xdb:0&\xfe\xb2%\x0f\xf87p}G\x9a\xd0(\xdbN\x97\xa7|\x89HFr)xv\xccOv\x15[8i\x06\xec\xd1?/\xa1\xf2&\x05\x1e\xba\x9bE5\xd2\xee\x00\x00\xb9\xc8\xba \xfa\xf6z\xb4\x00\x01\xbf\n\x93g\x00\x003\xfe\x14\x80\xb1\xc4g\xfb\x02\x00\x00\x00\x00\x04YZ"
find_exp = None
exec(lzma.decompress(func_code).decode())
num_test_cases = int(sys.stdin.readline())
for _ in range(num_test_cases):
a, b, c, d = map(int, sys.stdin.readline().split())
exp = find_exp(a, b, c, d)
if exp:
result_str = exp.replace('a', str(a)).replace('b', str(b)).replace('c', str(c)).replace('d', str(d))
print(result_str)
else:
print('Impossible')
第五版能过的代码:
运行时间:2344 ms
占用内存:101.27MB
import sys, lzma, base64, marshal
find_exp = None
exec(marshal.loads(lzma.decompress(base64.b85decode(
b'{Wp48S^xk9=GL@E0stWa761SMbT8$j;60fL;avbRfHI&cLn3WEozx4W6=HKPYV2p_keYZ`HJoD>kFsLKfo4$@ZtK?t>6?Gde3&U?E}fKIbfStZL*hjrFtPyFvBqZp<Mi%OE4(X@3G<OGWH`k$ld($?zDX?Byr>cq@6OkVMZ`Jt^uSYR6#(yLxdVIphDH+EMgzi=H7SvO-)%`1L>}fOi=SrH2HRitTuK_-@=BwPpF;GeyvStX0Fvp*$-(yyn)O&F>J&U3Uo+yP>r~Fn%W6&T>B7B9-u$mvy9YaqFx0HP8L!mwBK@_c8{vkU&PEM{?@E+L_DvGIOF-vX(6B9nl0XZYJpQ3mC)dR@$$lefSR_-{yMyMVxdY%q1oeV?IB2EuCi7IrM`%EDh}x^zUk{p{YyX^1t@cN~a;g@F5K0x5X{rYp<f{}_&DD^fkKQqTvu@LhR%VoQ(&`;ml*?a-Ug@y7&cy~JC?Yp?4%1%2+HUjz9p!nX+vf|Uz8SFcf}a>>Iy1=y7~9uo{@eyg6z%<eG6LEX17mb3q-IVIW#aCDxHsYqTDUBO#k3jP?fuN*+x27g4oP~iQ9~kQNzI9WoL{w%=dchiE})~PsYJWa=8=Rh!9$}XbS_Q-jt~P81vHe58ZPCJr6AA*mH1VAP#t<6bVCfXhdBr{YRfY165JQE`h2v&i^jt?7?MoO@+-b1^~{!Ow*VAVV(1})T=Yn)jCi5aMZBX$-21}*0>3>%eRbKNz+qe^xL-zA+148niu=82PH8KF)Zv2-gh}|8G6esshAtKBsJ(rBgJs{BHyH%k@zurX692(HdP;KJX`eWK&TSvJ`rN>u&a-7x_-9a6%l<ouYn~^aPuusLF!nbS^HR-J8i}S;3cL|l$Vbi#vU^{WRLsS4lp3O{>pKm-40w_Y$iFY4BG@ysoTtBO2h4ZV;0t{pk<t$0Zha9SX~@~!x2xO5xBjYspK(cg8jjQehe<TA_Y~*Q^jJNpXfzUxIpe7V=QMYE$#CmqYY-m;hT&azH*AEpq>xa8!wywyF5>VTZQpbKO44Ou>A!9`C54x*jDv|y_T8m+3v&h}^4qdHZ^ZHtA(_uSeR8xRtJ!O!?n-1_4;Kya__)yDb?5Qm;)-gSvVC6wFREzj`j$lHeWU=@4V9?3;&ntp2>j6;NFlas_?Uw9+j?yTHW>+LZ>5^NmV=mM(7qoq=WefoEue#;ew5GJXV-KBuQHl+k$cuBR3Cp+9o{7C?ubjmZH00sPO~$Uqgp2WC3;e^_}Wof_!=>vFb-Vj-y!uV4RyZ?z{O5j#yu<G>HYw0vY1DWmBD6fx0X*TRY+d#zf|y=!$qY@Uj_i0g`#(r_mSZLBDIu>>!+*gXcE`DM^KzwN=%Wn(&|<G(ZEsBn0pOJA=j0I7Y3s2o69JkNsw(o50rTt3;1S_)T)xYwjv>&KKcrcvmfZ!S&e~g&$$Wd1Qzjkvf7fyFt_~><l*URb_Css)qap*L73miR1QErzX;>v>&hARjjrGa3}Ai26K#;!q<Lx3v{s**THVZ9UA91lVH4-Sy+{-utk66@FKQKnbw&=9IoQL@c`Vx~fD%_tRFiY;cmxYUB`kbFG%0q43+WW}tCI9B0=e--XRNX=p;V*3gA%1b6sFw$YVgU*)0Hg^7||{1hJnzh7x7k>mo_>CoRJr=hG8jls<|e<mI0kh`(tWcgqS2T)oGZr-!Be$Z2(v4J`7Q)^=3XNKX3+q^Clh{m<(&BSsR5lh)#BjSH7<R_^SzZffaEba1iM#oLezzBdlu6NDbH<%4V@tIz{)dB^E27SCzjcPK`?$-C47zY&x8LLs1$#JHe-hXlP?PJj$vFZX@OIH>Z->Ny>MFyFrV@hGT*T7^5r@;H=9}<Td|zB8=ElHBXR$WaEj<%7PcG2;X1b72o;OI$m)t<>}Ffg`7Da#+mgwJ1il4deWWBa}(wRx(06F#U#HaEiB%``=o*^SXN8<v${kdQGw7L#$fAD3z0kvj@*?<U!)-k>9M<(N0C8G(mk$Ze>(c`IDGHHY+VE(RLIgy?qg96+0{lWlT}P?;kgBSK;T|HuCXvrKA>3`@hiKPS0pC~OO~r6T*evp{K)AQ>N2G?7=1Qn78XT-E<frt$+mA^KDyO?_;6+@^2FmB#=&y|@1EWDp-OIY->vZ>+1i9>59hNh&@e+sk%HN;ko*V0801JylZ)MVqCDIaodT>VJRr;SYDOy{*>q<hQ>hCkprRL5kn@2Im{I6(@AizO;_sH%7(_Iao%Vpz0Z7$}R}uQC&uIH!$L<5fXy24$%A+vGKHC}#r+Gt+M&1N?-~wg~Lmvb%C`SUAMWWLvPYIomNA?Bbms7r}rN2B0Lh}<{Z=`BD3#()6UbOy)HN&40WpHwXr_CaOaG;Ir>hA$AYM6y$7!822F|sH^%yV#>phvCwi9zA)tE8A_)|?Yz(yYD(^~)cOwY-b{8H;ikf*hjzUFDu0qs8l>)j2}xTcow*LcuhcoM!(hcSfSWyX`r9BIGRJ7Otq5);FwdE={XjraeBRr1V9vJjhD`$){=uHK+T=9^%t+A_~qy3WoU3I2^6jgaw;zMX*M-(=1ueO(~aY=!x)4L~KC6zlx5B{w^6}q*+N~*^c*^OKYUD>xM*doJ(%W8@7M>6k#%1=Cmhcc9I!*X6N^ESQ@A+gx5(_sAS2ThCnT%Gl<yKhWR9jgQM^UBhxauhf8}fxp<s-iq#2`<h$X~<PPS4c1JSzrp22lDw&)e1R<8%pm{iHjLHqJQ#D4=LG**gRJ1>Dx}9m3=}<iXwZd0JOt5jJ+?uzekeE$gvuW0jpC#VXS=@!q1YFqjBjpb-Rd#>F)u1*4z)5Uz1dQn;@1x1@m~Zf(q(rYS)`=jdHo<M$$5Dca?mZ3%=c!>r4o7(;?1VFUx@^1*rrgxe;Ik)*h{X7qS)z0A6C+E<000009v656$@Bkb00I3GntK2MS>}MfvBYQl0ssI200dcD'
))))
for _ in range(int(sys.stdin.readline())):
a, b, c, d = map(int, sys.stdin.readline().split())
output_exp = find_exp(a, b, c, d)
if output_exp:
print(output_exp)
else:
print('Impossible')
之后的更改(从你能看得懂的层面上来说)就不大了我直接放最终版了,性能开头说过了
import sys, lzma, base64, marshal
find_exp = None
exec(marshal.loads(lzma.decompress(base64.b85decode(
b'{Wp48S^xk9=GL@E0stWa761SMbT8$j;1%lx3|#;*fHI&cLn3WEozx4W6=HKPYV2p_keYZ`HJoD>kFsLKfo4$@b{vJI3lGvkVC6iW7FU!mVUxJXYhOTKVUyK<v+~&1E{zT=xqzlqh@b0?3r$}R<+r_@61=<Bk18*$UJ;MxRsF^G?Q*&e1p>Q2^uOAHrcas(UT@Xf!u>!ZrHKvxS7x};qFzE6aIzrR{`X=bHeTRqyB>LJIdC(pxnSiysdYoGa*dF5Z$7^h_EJ@sR-n{E<1$?)3IMsP{D=zA8`MZTA!6b@K%u^+k|=zP{yCIca$HM{EvG6*SR9u<jXkDlJjg&KZ?TsHZ9VKkOTHjU1VFTCgE$X=DNgk?jrdwNeTm4ou>BhQrq&%n>mr>Zy{vvwKMsRjM`Bulzg?bKM?8`zsDe|0K#WZ&QbJOMW*Tdu$?yH872S?9h1Vid!1ZCo@`78@){0`j?6pdLg{lxsT+{R`2$DwBIPs%qSWGgkd6LEx{Y0ZJE~>XgJcpL3wLbqeZ}Y@G%CEaYTe-Q@RK0#`^Dwo^ddwn}9>tYh0Xp|$mcQgE8)=rWUBr|G|CJ}ftVev6C^=W?Ctx_ojn+((KXYqoP$SQzyqGnet|y2SqYbN)LKf9Q!z6hPU|o&vwOs>ygfetJo7EXh?lUlB!PI^_<F1TiU9WAi{*kFL3!jRTte7pXwW(~%00$Mu7>?xSwaj7Rj#;^&OH$Wuc78beC~q5$JoS{7dcuVsRsWY6xweZGRK4hk*gZYU*F+3uX7K^oh@$<$@?GOe!!O~-$?<tbL9-~)3y=2@I=F9-T{zpxc%dr22^WUBS1cW|_Ow&|4u3f?Dl7ZM9rpPqoiwu(U$R~`Q=N%hvkiaH=0sYjs_9ma<?xTzGR^{HR{9p&&>(h+0V_?q6dfxx#&59A*&u73OZSjjJZUQZ^fo|HsuEl-S~+4@clA1Od29TmzRPsLqmCbc^Iw}%00zjg>6m<h_8Mw0Vr}YpJ+O&2k{s9UHr2pUSAL>)l@g9tW5I_Ltm>?^NybapA3$;m8<aZ3spjFFM8Xe$Qr9Lz+N;W)YmB<6+arM?#1lMb>!1Ytf1d|11(|Fi^6o2(dptE*l^9zdhFp5p4o`yI1NOxtLroh1`XzHc-@ec*`^eN=CVCdVrhaA4p0S_&qpf!ByxtH*&hdNn{A1JRW@B@1AnK!c!RO%D`UaL!{qhv>O@eWTdjpq(7i`aJOUm`(pJS6q5VaY2STCo~>tCcbU~|LzC}%twiNmyVr%r8Wm({vGe;pY0x0G-2v20MV?l_mize1MK55s>n-HitsB5c&^ow&n`2-<M9jc4bGixt~p_IfSQS<ejvSt3~g#jR(!il%2i00F27>?;5O9$VY4vBYQl0ssI200dcD'
))))
print("\n".join(
find_exp(*map(int, sys.stdin.readline().split())) or 'Impossible'
for _ in range(int(sys.stdin.readline()))
))
说一下主要用了哪些优化
从每次进行eval算式计算变成了预先编译eval算式再变成了eval生成lambda函数
从预先生成算式改成了打表(
去掉了可以互相转换的式子,从3000多条减到了200多条
写了大概一千万条模拟数据,然后测试了一下,发现其实200多条是实际使用的,然后又根据匹配的数量拍了个序
主要就是这些了,其实最后代码里面编译的内容就是个函数,内容大概就是下面这样
def find_exp(a, b, c, d):
if (a+b+c+d) % 24 == 0: return f"{a}+{b}+{c}+{d}"
...
全部评论 2
%%%%%%%%%%
2025-04-02 来自 广东
0顶
2025-04-02 来自 浙江
0顶
2025-04-06 来自 浙江
0
有帮助,赞一个