求助!谁答复让我AC我就关注。

P1689 方程求解

请问楼主在吗
by yi_zhi_naxida @ 2023-07-11 15:35:21


你可以不用flag(个人觉得, 我是蒟蒻, 想不想听, 自己决定)
by yi_zhi_naxida @ 2023-07-11 15:37:17


```cpp #include <bits/stdc++.h> using namespace std; string s; int x=-1,y=-1,z=-1,sum; int flag=0,fu; int main() { getline(cin,s); for(int i=0;i<s.size();i++) { if(s[i]=='?') flag++; if(s[i]>='0'&&s[i]<='9') { sum=0; while((s[i]>='0'&&s[i]<='9')||(s[i]==' ')) { if(s[i]==' ') i++; else { sum=sum*10+(s[i]-'0'); i++; } } i--; if(flag==2) { z=sum; break; } else if(flag==1) { y=sum; flag++; } else if(flag==0) { x=sum; flag++; } } if(s[i]=='+') fu=0; if(s[i]=='-') fu=1; } if(x==-1) { if(fu==0) cout<<z-y; else cout<<z+y; } if(y==-1) { if(fu==0) cout<<z-x; else cout<<x-z; } if(z==-1) { if(fu==0) cout<<x+y; else cout<<x-y; } return 0; } ``` 主要改动了以下几个地方: 1.while后要i--,因为此时的s[i]不是数值,在加上for循环的i++会忽略一些字符。 2.if(y==-1)中fu值为1的情况。属于低级错误了吧,应当是x-z。 [亲测有效](https://www.luogu.com.cn/record/114898286)
by RaymondFang @ 2023-07-11 15:41:36


首先看一下题目,可以看出来可以用字符串,而数字所对应的序号只要判断一下是不是<='9' && >='0', 是的话就 - '0',不是就不管。
by yi_zhi_naxida @ 2023-07-11 15:41:58


|