求助
查看原帖
求助
1057768
ycx20120224楼主2024/10/2 22:29
```cpp
#include<iostream>
#include<sstream>
#include<iomanip>
using namespace std;
struct shu{
	int a,b;
};
string s;
void fs(int id,char ch)
{
	long long lid,rid;
	shu temp;
	stringstream ss;
	for(int i=id-1;i>=0;i--)
	{
		if(s[i]=='+' || i==0)
		{
			lid=i;
			long long t;
			ss<<s.substr(i+1,id-i-1);
			ss>>t;
			temp.a=t;
			break;
		}
	}
	ss.str("");
	for(int i=id+1;i<s.size();i++)
	{
		if(s[i]=='+' || s[i]=='*' || i==s.size()-1)
		{
			rid=i;
			int t;
			ss<<s.substr(id+1,i-id-1);
			ss>>t;
			//cout<<"                                "<<s.substr(id+1,i-id-1)<<endl;
			temp.b=t;
			break;
		}
	}
	ss.str("");
	if(ch=='+')
	{
		long long t=temp.a+temp.b;
		t%=10000;
		ss<<t;
		string str;
		ss>>str;
		//cout<<"----------"<<s.substr(0,lid+1)<<"-"<<str<<"-"<<s.substr(rid)<<endl;
		if(rid<s.size()-1)
			s=s.substr(0,lid+1)+str+s.substr(rid);
		else s=s.substr(0,lid+1)+str;
	}
	else
	{
		long long t=temp.a*temp.b;
		t%=10000;
		ss<<t;
		string str;
		ss>>str;
		//cout<<"----------"<<s.substr(0,lid+1)<<" "<<temp.a<<" "<<temp.b<<" "<<s.substr(rid)<<endl;
		if(rid<s.size()-1)
			s=s.substr(0,lid+1)+str+s.substr(rid);
		else s=s.substr(0,lid+1)+str;
	}
	return ;
}
void fc()
{
	for(int i=0;i<s.size();i++)
	{
		if(s[i]=='*')
		{
			fs(i,'*');
		}
	}
    //cout<<s<<" ";
	for(int i=0;i<s.size();i++)
	{
		if(s[i]=='+')
		{
			fs(i,'+');
		}
	}
}
int main(void)
{
	cin>>s;
	fc();
	cout<<s<<endl;
	return 0;
 } 
2024/10/2 22:29
加载中...