CCF201903-2二十四点

试题编号201903-2
试题名称二十四点
时间限制1.0s
内存限制512.0MB
问题描述在这里插入图片描述
int main()
{
	int n;
	cin >> n;
	string s;
	int num[4];
	char opt[3];
	int ans = 0;
	while (n--)//while (n--)其实是while (n != 0){n = n - 1;...},n从10一直减到1时停止
	{
		cin >> s;
		for (int i = 0; i < s.size(); i++)
		{//分离
			if (i % 2 == 0)
				num[i / 2] = (int)s[i]-48;//字符'0'的ASCII码为48,字符'1'的ASCII码为49,则'1'-'0'=49-48=1了,也就是转化为int类型了
			else
				opt[i / 2] = s[i];
		}
		//for (int i = 0; i < sizeof(num); i++)
		cout << num[1]<<endl;
		for (int i = 0; i < sizeof(opt); i++)
			cout << opt[i] << endl;
		if (judge(opt))
		    ans = calculate((calculate((calculate(num[0], num[1], opt[0])), num[2], opt[1])), num[3], opt[2]);
		else
		{
			if (opt[0] == '*' || opt[0] == '/')//第一个是乘除
			{ 
				ans = calculate(num[0], num[1], opt[0]);
				if (opt[1] == '*' || opt[1] == '/')//第二个是乘除
					ans = calculate((calculate(ans, num[2], opt[1])), num[3], opt[2]);
				else
				{
					if (opt[2] == '*' || opt[2] =='/')
						ans = calculate(ans,(calculate(num[2], num[3], opt[2])), opt[1]);
					else
						ans = calculate((calculate(ans, num[2], opt[1])), num[3], opt[2]);
				}
			}
			else//第一个不是乘除
			{
				if (opt[1] == '*' || opt[1] == '/')
					ans = calculate((calculate((calculate(num[1], num[2], opt[1])), num[3], opt[2])), num[0], opt[0]);
				else
					ans = calculate((calculate((calculate(num[2], num[3], opt[2])), num[1], opt[1])), num[0], opt[0]);

			}
			
		}
		if (ans == 24)
		    cout << "Yes" << endl;
	    else
	     	cout << "No" << endl;
	}
	return 0;
}

参考于此链接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值