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.
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5269
这题我居然在选拔赛上WA了快20次╮(╯▽╰)╭
千万不要写成这样:
if(b=='*'||b=='/'||b=='%') cout<<cal(cal(a,b,c),d,e)<<endl; else cout<<cal(a,b,cal(c,d,e))<<endl;0 - 0 + 3 就错了!!!!!
#include<iostream>
#include<algorithm>
#include<string>
#include<map>
#include<cmath>
#include<string.h>
#include<stdlib.h>
#include<cstdio>
#define ll long long
using namespace std;
int cal(int a,char b,int c){
if(b=='+')
return a+c;
else if(b=='-')
return a-c;
else if(b=='*')
return a*c;
else if(b=='/')
return a/c;
else if(b=='%')
return a%c;
}
int main(){
int t;
cin>>t;
while(t--){
int a,c,e;
char b,d;
cin>>a>>b>>c>>d>>e;
if(b=='*'||b=='/'||b=='%')
cout<<cal(cal(a,b,c),d,e)<<endl;
else if(d=='*'||d=='/'||d=='%')
cout<<cal(a,b,cal(c,d,e))<<endl;
else
cout<<cal(cal(a,b,c),d,e)<<endl;
}
return 0;
}