ZOJ3782-Ternary Calculation

本文介绍了一种解决三元运算问题的方法,通过解析输入的运算表达式并计算其结果。该算法可以处理加、减、乘、除及取余运算,并提供多个测试案例的解答。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Ternary Calculation

Time Limit: 2 Seconds      Memory Limit: 65536 KB

Complete the ternary calculation.

Input

There are multiple test cases. The first line of input contains an integer T indicating the number of test cases. For each test case:

There is a string in the form of "number1 operatora number2 operatorb number3". Each operator will be one of {'+', '-' , '*', '/', '%'}, and each number will be an integer in [1, 1000].

Output

For each test case, output the answer.

Sample Input
5
1 + 2 * 3
1 - 8 / 3
1 + 2 - 3
7 * 8 / 5
5 - 8 % 3
Sample Output
7
-1
0
11
3
Note

The calculation "A % B" means taking the remainder of A divided by B, and "A / B" means taking the quotient.


Author: ZHOU, Yuchen
Source: The 11th Zhejiang Provincial Collegiate Programming Contest


题意:给你一串算式,计算出答案


#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <cstring>
#include <string>
#include <map>
#include <vector>
#include <queue>
#include <bitset>
#include <stack>

using namespace std;

int main()
{
    char ch1,ch2;
    int a,b,c;
    int t;
    scanf("%d",&t);
    while(t--)
    {
        scanf("%d %c %d %c %d",&a,&ch1,&b,&ch2,&c);
        if(ch1=='+'||ch1=='-')
        {
            int ans;
            if(ch2=='+') ans=b+c;
            else if(ch2=='-') ans=b-c;
            else if(ch2=='*') ans=b*c;
            else if(ch2=='/') ans=b/c;
            else ans=b%c;
            if(ch1=='+') printf("%d\n",ans+a);
            else
            {
                if(ch2=='-') printf("%d\n",a-b-c);
                else if(ch2=='+') printf("%d\n",a-b+c);
                else printf("%d\n",a-ans);
            }
        }
        else
        {
            int ans;
            if(ch1=='*') ans=a*b;
            else if(ch1=='/') ans=a/b;
            else if(ch1=='%') ans=a%b;
            if(ch2=='+') printf("%d\n",ans+c);
            else if(ch2=='-') printf("%d\n",ans-c);
            else if(ch2=='*') printf("%d\n",ans*c);
            else if(ch2=='/') printf("%d\n",ans/c);
            else printf("%d\n",ans%c);
        }
    }
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值