本地和数据点1都是对的 但是提交之后数据点1也是wa 最后只有16分
数据点1:
输入:20+3x=-18
输出:x=-12.667
#include<bits/stdc++.h>
using namespace std;
string s;
int sign,k,cnt;
char c;
double ans,l,r;
int main(){
cin>>s;
if(s[0]=='-') sign=2;
else sign=1;
s=s+"@";
for(int i=0;i<s.length();i++){
if(s[i]=='='){
if(sign==1) r-=cnt;
else r+=cnt;
cnt=0;
}
if(s[i-1]=='='){
k=i;
break;
}
if(s[i]=='+'){
if(sign==1) r-=cnt;
else r+=cnt;
cnt=0;
sign=1;
}
else if(s[i]=='-'){
if(sign==1) r-=cnt;
else r+=cnt;
cnt=0;
sign=2;
}
else if((s[i]<'0'||s[i]>'9')&&s[i]!='='){
c=s[i];
if(sign==1) l+=cnt;
else l-=cnt;
cnt=0;
}
else if(s[i]>='0'&&s[i]<='9')
cnt=cnt*10+(s[i]-'0');
}
cnt=0;
if(s[k]=='-') sign=2;
else sign=1;
for(int i=k;i<s.length();i++){
if(s[i]=='@'){
if(sign==1) r+=cnt;
else r-=cnt;
break;
}
if(s[i]=='+'){
if(sign==1) r+=cnt;
else r-=cnt;
cnt=0;
sign=1;
}
else if(s[i]=='-'){
if(sign==1) r+=cnt;
else r-=cnt;
cnt=0;
sign=2;
}
else if((s[i]<'0'||s[i]>'9')&&s[i]!='='){
c=s[i];
if(sign==1) l-=cnt;
else l+=cnt;
cnt=0;
}
else if(s[i]>='0'&&s[i]<='9')
cnt=cnt*10+(s[i]-'0');
}
ans=r/l;
cout<<c<<"=";
printf("%0.3llf",ans);
return 0;
}