文章
141
粉丝
68
获赞
400
访问
31.2k
#include <bits/stdc++.h>
using namespace std;
string sn[10]={
"zero","one","two","three","four","five","six","seven","eight","nine"
};
int main() {
string s;
vector<int>num;
long long a=0,b=0;
while(cin>>s){
if(s=="+"){
for(auto x:num){
a*=10;
a+=x;
}
num.resize(0);
}
if(s=="="){
for(auto x:num){
b*=10;
b+=x;
}
if(a==0&&b==0)continue;
cout<<a+b<<endl;
b=0;a=0;
num.resize(0);
}
for(int i=0;i<10;i++){
if(s==sn[i])num.push_back(i);
}
}
}
本题的难度在于如何分辨两个数,并求出来这两个数,反正这一题比浙大以前的算式题简单的多,其实思路很简单,我们只需要利用cin的特性,他会区分每个空格,而,这里面的数字,全都包含空格,那么,我们只需要对每个顺序读进来的数值进行处理即可。注意,他们自带的顺序规则,是解决本题的核心。
因为一定是 a + b = 的形式,所以,第一个读取的一定是a的数值,无论长度,我们可以把他存在一个num数组里面,然后,我们可以发现,如果string 在循环顺序的读入的时候是 + ,说明,这时候,已经读完了全部的 a 的每一位,这时候,我们可以生成一下这个 a ,这里我用long long 存储,然...
登录后发布评论
暂无评论,来抢沙发