题解 P2788@洛谷【数学1(math1)- 加减算式】

讲一个无耻的解法。

我们知道,如果每一个数之间都打一个空格,就可以简单的使用下面的程序解决。

#include <bits/stdc++.h>
using namespace std;
int main(){
    long long n,ans=0;
    while(cin>>n){
        ans+=n;
    }
    cout<<ans<<endl;
    return 0;
}

现在我们读入的是一个字符串,我们就使用字符串流手动把空格补上。

#include <bits/stdc++.h>
using namespace std;
int main(){
    string s;//读入的字符串
    stringstream ca;//字符串流
    cin>>s;//读入字符串
    for(unsigned int i=0;i<s.size();i++){
        if(s[i]>='0'&&s[i]<='9'){//数字
            ca<<s[i];
        }
        else{//符号
            ca<<" "<<s[i];
        }
    }
    long long n,ans=0;
    while(ca>>n){//cin>>n
        ans+=n;
    }
    cout<<ans<<endl;
    return 0;
}
Last modification:July 24th, 2019 at 08:15 pm
如果您觉得我的文章有用,请赏一颗糖糖。

Leave a Comment