Complete the ternary calculation.
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].
For each test case, output the answer.
5 1 + 2 * 3 1 - 8 / 3 1 + 2 - 3 7 * 8 / 5 5 - 8 % 3
7 -1 0 11 3
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; }