我也是服了
查看原帖
我也是服了
1603525
xyw1212楼主2025/1/31 10:15

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;
}
2025/1/31 10:15
加载中...