文章

141

粉丝

68

获赞

400

访问

31.2k

头像
A + B 加强版 题解:看似复杂,其实简单的输入手段
P1323 浙江大学机试题
发布于2025年3月11日 10:27
阅读数 19

#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 存储,然...

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发