试题
思路
暴力求解,对运算符挨个进行判断。先乘除后加减。
代码
import math
def subCal(strCal,num_left,num_right):
num_left = int(num_left)
num_right = int(num_right)
if strCal == "x":
return num_left*num_right
elif strCal == "/":
return num_left//num_right #整除
elif strCal == "+":
return num_left+num_right
else:
return num_left-num_right
def cal(calTmp,result):
resTmp = 0
if calTmp[1] == "x" or calTmp[1] == "/":
# 第一个运算符为X或/
resTmp = subCal(calTmp[1],calTmp[0],calTmp[2])
if calTmp[3] == "x" or calTmp[3] == "/":
# 第二个运算符为X或/
resTmp = subCal(calTmp[3],resTmp,calTmp[4])
resTmp = subCal(calTmp[5],resTmp,calTmp[6])
else:
# 第二个运算符为+或-
if calTmp[5] == "x" or calTmp[5] == "/":
# 第三个运算符为X或/
resTmp2 = subCal(calTmp[5],calTmp[4],calTmp[6])
resTmp = subCal(calTmp[3],resTmp,resTmp2)
else:
# 第三个运算符为+或-
resTmp = subCal(calTmp[3],resTmp,calTmp[4])
resTmp = subCal(calTmp[5],resTmp,calTmp[6])
else:
# 第一个运算符为+或-
if calTmp[3] == "x" or calTmp[3] == "/":
# 第二个运算符为X或/
resTmp2 = subCal(calTmp[3],calTmp[2],calTmp[4])
if calTmp[5] == "x" or calTmp[5] == "/":
# 第三个运算符为X或/
resTmp2 = subCal(calTmp[5],resTmp2,calTmp[6])
resTmp = subCal(calTmp[1],calTmp[0],resTmp2)
else:
# 第三个运算符为+或-
resTmp2 = subCal(calTmp[1],calTmp[0],resTmp2)
resTmp = subCal(calTmp[5],resTmp2,calTmp[6])
else:
# 第二个运算符为+或-
if calTmp[5] == "x" or calTmp[5] == "/":
# 第三个运算符为X或/
resTmp2 = subCal(calTmp[5],calTmp[4],calTmp[6])
resTmp = subCal(calTmp[1],calTmp[0],calTmp[2])
resTmp = subCal(calTmp[3],resTmp,resTmp2)
else:
# 第三个运算符为+或-
resTmp = subCal(calTmp[1],calTmp[0],calTmp[2])
resTmp = subCal(calTmp[3],resTmp,calTmp[4])
resTmp = subCal(calTmp[5],resTmp,calTmp[6])
return resTmp
def main():
sum_num = input()
cal_list = []
for i in range(int(sum_num)):
tmp = input()
cal_list.append(tmp)
result = []
for i in cal_list:
result.append(cal(i,result))
for i in result:
if i == 24:
print("Yes")
else:
print("No")
if __name__ == '__main__':
main()