ZOJ - 3782 水题,不要看作中缀式

    科技2026-06-18  15

    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.

    题目意思也就是给三个整数,两个运算符,直接操作即可

    #include"iostream" #include"cstdio" #include"stdlib.h" #include"cmath" #include"cstring" #include"cstdlib" #include"vector" #include"stack" #include"queue" #include"set" #include"map" #include"algorithm" #include <utility> #include <iomanip> #include <time.h> #include<list> const double PI=acos(-1.0); using namespace std; #define mem(a,b) memset(a,b,sizeof(a)) #define lowbit(x) x&-x #define inf 0x3f3f3f3f #define pr pair<int,int> typedef pair<char,int> PAIR; struct CmpByValue { bool operator()(const PAIR& lhs, const PAIR& rhs) { return lhs.second > rhs.second; } }; //priority_queue<int,vector<int>,greater<int>> pp; const int mod = 123456789 ; const int M = 1e3 +10 ; const int limt = 1<<20; const int INF = 1e9; typedef long long ll; /* 题目意思也就是给三个整数,两个运算符,直接操作即可 */ int Operate(int a, char theta, int b)///求两数a和b作θ运算的结果 { switch(theta) { case '+': return(a+b); case '-': return(a-b); case '*': return(a*b); case '/': return(a/b); case '%': return(a%b); } } int main() { ios::sync_with_stdio(0);//加速 int t; cin>>t; while(t--) { char ch1,ch2; int a,b,c; int sum=0; cin>>a>>ch1>>b>>ch2>>c; if(ch1=='/'||ch1=='%'||ch1=='*')//如果ch1是优先级高的运算符 { sum=Operate(a,ch1,b); //先运算a,b sum=Operate(sum,ch2,c); //再运算sum,c } else if(ch1=='+'||ch1=='-')//如果ch1是优先级低的运算符 { if(ch2=='/'||ch2=='%'||ch2=='*')//如果ch2是优先级高的运算符 { sum=Operate(b,ch2,c);//先运算b c sum=Operate(a,ch1,sum); //再运算sum a } else if(ch2=='-'||ch2=='+')//如果ch2是优先级低的运算符 { sum=Operate(a,ch1,b); //先运算a,b sum=Operate(sum,ch2,c); //再运算sum,c } } cout<<sum<<endl; } return 0; }
    Processed: 0.008, SQL: 9