题目描述
给一个方程,形如X+Y=Z或X-Y=Z。给出了其中两个未知数,请求出第三个数。未知数用‘?’表示,等式中也许会出现一些多余的空格。
输入格式
一行,方程。
输出格式
‘?’代表的值
输入输出样例
输入 #1 复制
样例输入1
1+2=?
样例输入2
3 +? = 2
输出 #1 复制
样例输出1
3
样例输出1
-1
说明/提示
0<=X,Y,Z<1,000,000,000
#include<bits/stdc++.h>
using namespace std;
string s;
long long x, y, z;
char ch;
int main(){
getline(cin , s);
int i = 0, len = s.size(), flag = 1;
while(i < len){
if(flag == 1){//x:第一项数字
if(isdigit(s[i]))
x = x * 10 + s[i]-'0';
else if(s[i] == '?')
x = -1;
}else if(flag == 0){//y:第二项数字
if(isdigit(s[i])){
y = y * 10 + s[i]-'0';
}else if(s[i] == '?')
y = -1;
}else if(flag == -1){//z:等于号后面的数字
if(isdigit(s[i]))
z = z * 10 + s[i]-'0';
else if(s[i] == '?')
z = -1;
}
if(s[i] == '+' || s[i] == '-')//ch:运算符
ch = s[i],flag = 0;
else if(s[i] == '=')
flag = -1;
i++;
}
//运算结果
if(x == -1){
if(ch == '+')
cout << z - y;
else if(ch == '-')
cout << z + y;
}else if(y == -1){
if(ch == '+')
cout << z - x;
else if(ch == '-')
cout << x - z;
}else if(z == -1){
if(ch == '+')
cout << x + y;
else if(ch == '-')
cout << x - y;
}
return 0;
}
思考:怎么把代码变短一点。