码风有亿点点垃圾()
by Xiiii @ 2022-08-20 21:53:15
@[Xiiii](/user/480877) 输出好像多打了一个l,而且似乎没判系数为 $1$ 的情况(单个字母)
by Wilson_Lee @ 2022-08-20 22:14:41
@[Wilson_Lee](/user/513900) 差了测试点#5
[](https://www.luogu.com.cn/record/84614464)
系数和输出这里都改了 测试点下载不了(我今天都还没下过测试点数据)
by Xiiii @ 2022-08-21 08:44:49
@[Wilson_Lee](/user/513900)
```cpp
#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(cnt==0) cnt=1;
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(cnt==0) cnt=1;
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;
printf("%c=%0.3lf",c,ans);
return 0;
}
```
by Xiiii @ 2022-08-21 08:48:42
在输出0-9+8=x-9+8之类的方程式中这个程序得数为x=-0.000,做一个特判就好啦
by mmdxm @ 2022-10-07 15:48:55
```
if(ans==-0) ans=0;
```
特判这样写就满分了@[Xiiii](/user/480877)
by mmdxm @ 2022-10-07 15:50:44
@[liuyufei0925](/user/526235) 谢谢谢谢谢谢谢谢!!!
by Xiiii @ 2022-10-14 21:47:34