题目描述
给一个方程,形如X+Y=Z或X-Y=Z。给出了其中两个未知数,请求出第三个数。未知数用‘?’表示,等式中也许会出现一些多余的空格。
输入输出格式
输入格式:
一行,方程。
输出格式:
‘?’代表的值
输入输出样例
说明
0<=X,Y,Z<1,000,000,000
思路:模拟
#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using namespace std; char sym,ch; int data[3]; char s[10005]; int k,pos,tot,n; int main(){ while(scanf("%c",&ch)!=EOF){ if(ch==' ') continue; if(ch==' ') break; s[n++]=ch; } tot=1; for(int i=0;i<n;i++){ if(s[i]=='?'){ pos=tot;continue; } if((s[ i ]==' ')||(s[i]=='=')) continue; if((s[ i ]=='+')||(s[i]=='-')){ sym=s[i];continue; } if((s[i]<='9')&&(s[i]>='0')){ k=0; while(((s[i]<='9')&&(s[i]>='0'))||(s[i]==' ')){ if(s[i]==' ') i++; else{ k=k*10+s[i]-'0';i++; } if(i==n) break; } i--; data[tot++]=k; } } if(sym=='+') if(pos==3) printf("%d",data[1]+data[2]); else printf("%d",data[2]-data[1]); else if(pos==1 ) printf("%d",data[1]+data[2]); else printf("%d",data[1]-data[2] ); return 0; }