20分(最后一个点ac)求调
查看原帖
20分(最后一个点ac)求调
1148322
XuanMing楼主2024/11/22 17:14
#include<bits/stdc++.h>
using namespace std;
vector<string>a;
vector<string>b;
//vector<string>c;
//vector<string>d;
int main()
{
//	freopen("1.txt","w",stdout);
	string s;
	cin>>s;
	if(s[0]!='-')
	{
		string tmp="+";
		tmp+=s;
		s=tmp; 
	}
	string d="";
	int i=0;
//	cout<<s<<endl;
	for(;i<s.size();i++)
	{
		
		d+=s[i];
		if(s[i+1]=='=')
		{
			a.push_back(d);
			break;			
		}
		if(s[i+1]=='-' or s[i+1]=='+' or i+1==s.size())
		{
			a.push_back(d);
			d="";
		}
	}
	i+=2;
	d="";
	for(;i<s.size();i++)
	{
		d+=s[i];
		if(s[i+1]=='-' or s[i+1]=='+' or i+1==s.size())
		{
			b.push_back(d);
			d="";
		}
	}
	if(b[0][0]!='-')
	{
		string tmp="+";
		tmp+=b[0];
		b[0]=tmp; 
	}
//		for(int i=0;i<a.size();i++)
//		cout<<a[i]<<" ";
//	cout<<endl;
//	for(int i=0;i<b.size();i++)
//		cout<<b[i]<<" ";
	int flag=0;
//	cout<<a.size()<<endl;
	int asize=a.size();
	for(int i=0;i<asize;i++)
	{
//		cout<<a[i]<<endl;
		flag=0;
		for(int j=1;j<a[i].size();j++)
		{
			if(a[i][j]>='a' and a[i][j]<='z')
				flag=1;
		}
		if(!flag)
		{
			string tmp=a[i];
			a.erase(a.begin()+i);
			if(tmp[0]=='+')
			{
				tmp[0]='-';
			}
			else
				tmp[0]='+';
			b.push_back(tmp);
		}
	}
	int bsize=b.size();
	for(int i=0;i<bsize;i++)
	{
		flag=0;
		for(int j=1;j<b[i].size();j++)
		{
			if(b[i][j]>='a' and b[i][j]<='z')
				flag=1;
		}
		if(flag)
		{
			string tmp=b[i];
			b.erase(b.begin()+i);
			if(tmp[0]=='+')
			{
				tmp[0]='-';
			}
			else
				tmp[0]='+';
			a.push_back(tmp);
		}
	}
	int sum=0; 
	for(int i=0;i<a.size();i++)
	{
		int xd=0;
		for(int j=1;j<a[i].size();j++)
		{
			if(a[i][j]>='a' and a[i][j]<='z')
				break;
			xd+=(a[i][j]-'0')*pow(10,a[i].size()-j-2);
		}
		if(xd==0)
			xd=1;
		if(a[i][0]=='-')
			xd=-xd;
		sum+=xd;
	}
//	cout<<sum;
	int num=0;
	for(int i=0;i<b.size();i++)
	{
		int xd=0;
		for(int j=1;j<b[i].size();j++)
		{
			xd+=(b[i][j]-'0')*pow(10,b[i].size()-j-1);
		}
//		if(xd==0)
//			xd=1;
		if(b[i][0]=='-')
			xd=-xd;
		num+=xd;
	}
//	cout<<sum<<" "<<num;
	if(sum==0)
		sum=1;
	double ans=((double)num)/((double)sum);
	for(int i=0;i<a[0].size();i++)
	{
		if(a[0][i]>='a' and a[0][i]<='z')
		{
			cout<<a[0][i]<<"=";
			break; 
		}
	}
//	printf("%.3lf\n",ans);
	cout << fixed << setprecision(3) << ans << endl;
//	cout<<sum<<" "<<num;
	return 0;
}
2024/11/22 17:14
加载中...