您的位置:首页 > 其它

Ternary Calculation(也不用栈,注意输入方式即可,直接解决)

2016-04-19 23:01 369 查看

Ternary Calculation

Time Limit: 2000ms
Memory Limit: 65536KB
64-bit integer IO format: %lld      Java class name:
Main

Submit

Status

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 "number1operatoranumber2operatorbnumber3". 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<stdio.h>
int num[4];
char ch[3];

void input()
{
scanf("%d",&num[1]);
getchar();
scanf("%c",&ch[1]);
scanf("%d",&num[2]);
getchar();
scanf("%c",&ch[2]);
scanf("%d",&num[3]);
}

int compute(int a,char op,int b)
{
switch(op)
{
case'+':return a+b;break;
case'-':return a-b;break;
case'*':return a*b;break;
case'/':return a/b;break;
case'%':return a%b;break;
}
}

char precede(char a,char b)
{
if(a=='+'||a=='-')
{
if(b=='*'||b=='/'||b=='%')
return '<';
else
return '=';
}
else
{
if(b=='*'||b=='/'||b=='%')
return '=';
else
return '>';
}
}

int main()
{
int T;
scanf("%d",&T);
while(T--)
{

int m,s;
input();
switch(precede(ch[1],ch[2]))
{
case '>':m=compute(num[1],ch[1],num[2]);
s=compute(m,ch[2],num[3]);
break;
case'=':m=compute(num[1],ch[1],num[2]);
s=compute(m,ch[2],num[3]);
break;
case'<':m=compute(num[2],ch[2],num[3]);
s=compute(num[1],ch[1],m);
break;
}
printf("%d\n",s);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: