P1689方程式ソルバー

説明タイトル
フォーム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;
} 

質問:どのようにコードが少し短いです。

公開された15元の記事 ウォン称賛10 ビュー215

おすすめ

転載: blog.csdn.net/qq_39053800/article/details/104237059