import itertools
# 符号运算
def function(a: int, b: int, f: str) -> int:
if f == "+":
return a + b
if f == "-":
return a - b
elif f == "*":
return a * b
elif f == "//":
return a // b
elif f == "**":
return a ** b
elif f == "^":
return a ^ b
elif f == "|":
return a | b
elif f == "&":
return a & b
elif f == ">>":
return a >> b
elif f == "<<":
return a << b
# 这里是你有的数字
nums = [2, 2, 2, 2, 6, 6, 9, 13, 13, 14, 34, 1024]
# 这里是你有的符号
f = ['&', '&', '|', '|', '+', '*', '*', '^', '<<']
list_r = list(itertools.permutations(f, 3))
num_r = list(itertools.permutations(nums, 4))
set_res = set()
for element in list_r:
f1 = element[0]
f2 = element[1]
f3 = element[2]
for num in num_r:
res1 = function(num[0], num[1], f1)
res2 = function(res1, num[2], f2)
res3 = function(res2, num[3], f3)
if res3 == 1024:
# print(str(num[0]) + f1 + str(num[1]) + f2 + str(num[2]) + f3 + str(num[3]) + "={}".format(res3))
string = "(((" + str(num[0]) + f1 + str(num[1]) + ")" + f2 + str(num[2]) + ")" + f3 + str(
num[3]) + ") = 1024"
set_res.add(string)
if len(set_res) == 0:
print("没有合适的组合")
sys.exit(0)
# 输出,因为是集合自动去重,1024为什么是SSR卡?
for i in set_res:
print(i)
sys.exit(0)