WA的程序写了半天才发现自己是个Joker
AC:
#include<iostream>
using namespace std;
int main(){
long long ans=0,num;
while(cin>>num)ans=ans+num;
cout<<ans;
}
WA:
#include<bits/stdc++.h>
using namespace std;
int StoI(string t) {
stringstream sin;
sin<<t;
int d;
sin>>d;
return d;
}
string ItoS(int d)
{
stringstream sin;
sin<<d;
string t;
sin>>t;
return t;
}
int findOp(string t)
{
for(int i=0; i<t.size(); i++)
if(t[i] == '-'||t[i]=='+')
return i;
return -1;
}
int LeftDigitPos(string s, int p)
{
int left;
for(int i=p; i>=0; i--){
if(s[i]>='0' && s[i]<='9') left = i;
else break;
}
return left;
}
int RightDigitPos(string s, int p)
{
int right;
for(int i=p; i<s.size(); i++){
if(s[i]>='0' && s[i]<='9') right = i;
else break;
}
return right;
}
int Plus(string s){
for(int index=findOp(s); index!=-1; index=findOp(s))
{
int c;
int left = LeftDigitPos(s, index-1);
string sa = s.substr(left,index);
int a = StoI(sa);
int right = RightDigitPos(s,index+1);
string sb = s.substr(index+1,right-index);
int b = StoI(sb);
if(s[index]=='+'){
c = a + b;
}
else{
c = a - b;
}
string sc =ItoS(c);
s = s.substr(0,left) + sc +s.substr(right+1,s.size()-1-right);
}
return StoI(s);
}
int main()
{
string s;
cin>>s;
long long ans = Plus(s);
cout<<ans;
return 0;
}