CCF认证考试201903-2二十四点

试题

题目

思路

暴力求解,对运算符挨个进行判断。先乘除后加减。

代码

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()

猜你喜欢

转载自blog.csdn.net/weixin_39333120/article/details/102501257