为了保证数据精度,新加了个类,结果一大半时间在改类的bug。=-=哎
a, b, c, d = map(int, input().split())
class DDNum:
def __init__(self, u, d=1):
self.u = u
self.d = d
self.nan = False
def add(self, o):
if self.nan:
return self
if self.d != o.d:
tmp_d = self.d * o.d
self.u = self.u * o.d + o.u * self.d
self.d = tmp_d
else:
self.u = self.u + o.u
return self._yue_fen()
def min(self, o):
if self.nan:
return self
if self.d != o.d:
tmp_d = self.d * o.d
self.u = self.u * o.d - o.u * self.d
self.d = tmp_d
else:
self.u = self.u - o.u
return self._yue_fen()
def mul(self, o):
if self.nan:
return self
self.u *= o.u
self.d *= o.d
return self
def div(self, o):
if self.nan:
return self
self.u *= o.d
self.d *= o.u
if self.d == 0:
self.nan = True
return self
return self
def equal(self, o):
tmp = DDNum(self.u, self.d)
tmp.min(o)
if tmp.u == 0 and not tmp.nan:
return True
else:
return False
def _yue_fen(self):
# if self.u % self.d == 0:
# self.u = self.u // self.d
# self.d = 1
return self
def __repr__(self):
return f"({self.u}/{self.d})"
def copy(self):
return DDNum(self.u, self.d)
def dfs(nums):
# 只有一个数字
if len(nums) == 1:
return nums[0].equal(DDNum(24)) or nums[0].equal(DDNum(-24))
for i in range(len(nums)):
for j in range(i+1, len(nums)):
tmp_nums = nums.copy()
n1, n2 = nums[i].copy(), nums[j].copy()
tmp_nums.pop(j)
tmp_nums.pop(i)
if dfs([n1.copy().add(n2)]+tmp_nums.copy()):
return True
if dfs([n1.copy().min(n2)]+tmp_nums.copy()):
return True
if dfs([n1.copy().mul(n2)]+tmp_nums.copy()):
return True
if dfs([n1.copy().div(n2)]+tmp_nums.copy()):
return True
if dfs([n2.copy().div(n1)]+tmp_nums.copy()):
return True
return False
print("true" if dfs([DDNum(a), DDNum(b), DDNum(c), DDNum(d)]) else "false")



京公网安备 11010502036488号