説明タイトル
フォームX + Y = ZまたはXY = Zの式に 請求つの未知数、第三の要求の数を与えられ。不明な使用は「?」式は、いくつかの余分な空間であってもよい、ことを示します。
フォーマットの入力
ラインの方程式を。
出力フォーマットは、
「?」の値を表します
サンプル入力と出力の
入力#1複製
サンプル入力1
1 + 2 =?
サンプル入力2
3 +?= 2
出力#1の複製
サンプル出力1
3
サンプル出力1
-1
説明/ヒント
0 <= X、Y、Z <10億
#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;
}
質問:どのようにコードが少し短いです。