求调!!!!谢谢大佬
查看原帖
求调!!!!谢谢大佬
480877
Xiiii楼主2022/8/20 21:52

本地和数据点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;
}
2022/8/20 21:52
加载中...