【模拟】【字符串】Equal
Equal
Description
msh:吴翼,这题怎么做啊?
will:看论文去。
ql:msh,这题怎么做啊?
will:这么简单的题都不会啊!
jzt:ql,这题怎么做啊?
will: 哈哈,你等着,看哥来教你。
一日,再一次被bs之后,大家终于忍无可忍了。决定出点题难住will,好打压一下will嚣张的气焰。
不过,由于大家的智商有限,只会加减法,经过商讨,总是让will回答诸如a+b或者a-b之类的问题,似乎难不住他。终于,jzt想到一个很NB的办法:让他算a+?=b。jzt:这么NB的难题都被我想到了,哈哈!
will:这种题,看论文去……
Input
输入一个等式,形如A+B=C或A-B=C。给定其中的两个数,请确定其中的第三个数。其中0<=A,B,C<1,000,000,000,没有给定的数用一个单独的“?”表示,等式中可能会有多余空格。
Output
直接输出要求的第三个数,用回车结尾。
Sample Input 1
1+2=?
Sample Output 1
3
Sample Input 2
1 +?= 3
Sample Output 2
2
这一题数据用long long储存,注意处理空格,数字中间也会有!!!
C++ Code
/* C++ Code http://oijzh.cnblogs.com */ #include<cstdio> #include<iostream> using namespace std; char s[100],a[100],b[100],c[100],fh; void read() { char ch[100]; gets(ch); int count=0; int i; for(i=0;i<strlen(ch);i++) if(ch[i]!=' ') s[count++]=ch[i]; i=0; while(i<strlen(s)) { count=0; while(i<strlen(s)) { if(s[i]=='+'||s[i]=='-')break; a[count++]+=s[i];i++; } fh=s[i];i++;//读入符号 count=0; while(i<strlen(s)) { if(s[i]=='=')break; b[count++]+=s[i];i++; } count=0; i++;//跳过等号 while(i<strlen(s)) { c[count++]+=s[i];i++; } } } long long tonum(char q[]) { long long k=1,sum=0; for(int i=strlen(q)-1;i>=0;i--) { sum+=k*(long long)(q[i]-'0'); k*=10; } return sum; } void jia(char j[],char k[]) { cout<<tonum(j)+tonum(k)<<endl; } void jian(char j[],char k[]){ cout<<tonum(j)-tonum(k)<<endl; } int main() { freopen("equal.in","r",stdin); freopen("equal.out","w",stdout); read(); if(fh=='+') { if(c[0]=='?') {jia(a,b);exit(0);} if(b[0]=='?') {jian(c,a);exit(0);} if(a[0]=='?') {jian(c,b);exit(0);} } if(fh=='-') { if(c[0]=='?') {jian(a,b);exit(0);} if(b[0]=='?') {jian(a,c);exit(0);} if(a[0]=='?') {jia(b,c);exit(0);} } return 0; }
..... 转载请注明出处 ..... http://oijzh.cnblogs.com ..... by jiangzh