题目描述
给一个方程,形如 X+Y=Z 或 X−Y=Z。给出了其中两个未知数,请求出第三个数。未知数用 ?
表示,等式中也许会出现一些多余的空格。
输入格式
输入一行一个字符出代表方程。
输出格式
一行一个整数表示?
代表的值。
输入输出样例
输入 #1复制
1+2=?
输出 #1复制
3
输入 #2复制
3 +? = 2
输出 #2复制
-1
输入 #3复制
3-?=2
输出 #3复制
1
说明/提示
数据规模与约定
对于 100%100% 的数,保证 0≤X,Y,Z<10^9,输入的字符串一定为题目给定的形式且长度不超过 10^6。
代码:
#include<iostream>
#include <algorithm>
#include<string>
#include<cmath>
#include <queue>
using namespace std;
int main(){string m;getline(cin,m);string num1="";string num2="";string num3="";int fh=0;int dh=0;int wh=0;for(int i=0;i<m.length();i++){if(m[i]=='+'||m[i]=='-'){fh=i;}if(m[i]=='='){dh=i;}if(m[i]=='?'){wh=i;}}for(int i=0;i<=fh;i++){if(m[i]>='0'&&m[i]<='9'){num1+=m[i];}}for(int i=fh;i<=dh;i++){if(m[i]>='0'&&m[i]<='9'){num2+=m[i];}}for(int i=dh;i<m.length();i++){if(m[i]>='0'&&m[i]<='9'){num3+=m[i];}}if(wh<fh){long long num11=stoi(num2);long long num22=stoi(num3);if(m[fh]=='+'){cout<<num22-num11;}if(m[fh]=='-'){cout<<num11+num22;}}if(wh>fh&&wh<dh){long long num11=stoi(num1);long long num22=stoi(num3);if(m[fh]=='+'){cout<<num22-num11;}if(m[fh]=='-'){cout<<num11-num22;}}if(wh>dh){long long num11=stoi(num1);long long num22=stoi(num2);if(m[fh]=='+'){cout<<num22+num11;}if(m[fh]=='-'){cout<<num11-num22;}}return 0;
}