求助
查看原帖
求助
43144
jwkljwkl楼主2022/10/26 13:26

为什么把第7行的getline改为cin就对了?

#include<bits/stdc++.h>
using namespace std;
string st;
long long xs1[1000],xs2[1000],ans[65];
int main()
{
	while(getline(cin,st))
	{
		string ct=st;
		st.clear();
		for(int i=0;i<ct.size();i++)
			if(ct[i]!=' ')
				st.push_back(ct[i]);
		int fff=1;
		memset(xs1,0,sizeof(xs1));
		memset(xs2,0,sizeof(xs2));
		int j;
		for(j=0;j<st.size()&&st[j]!='*';)
		{
			if(st[j]=='\n')continue;
			if(st[j]=='('||st[j]==')')
			{
				j++;
				continue;
			}
			if(st[j]=='+')
			{
				j++;
				fff=1;
				continue;
			}
			else if(st[j]=='-')fff=-1;
			if(isdigit(st[j]))
			{
				int xss=0;
				while(isdigit(st[j]))
				{
					xss=xss*10+st[j]-'0';
					j++; 
				}
				int zss=0;
				if(st[j]=='a')
				{
					j+=2;
					while(isdigit(st[j]))
					{
						zss=zss*10+st[j]-'0';
						j++;
					}
				}
				if(fff==1)xs1[zss]+=xss;
				else xs1[zss]-=xss;
				continue;
			}
			j++;
		}
		if(j==st.size())
		{
			for(int i=0;i<=30;i++)ans[i]=xs1[i];
		}
		else
		{
			j++;
			fff=1;
			for(;j<st.size()&&st[j]!='*';)
			{
				if(st[j]=='\n')continue;
				if(st[j]=='('||st[j]==')')
				{
					j++;
					continue;
				}
				if(st[j]=='+'||st[j]=='*')
				{
					j++;
					fff=1;
					continue;
				}
				else if(st[j]=='-')fff=-1;
				if(isdigit(st[j]))
				{
					int xss=0;
					while(isdigit(st[j]))
					{
						xss=xss*10+st[j]-'0';
						j++; 
					}
					int zss=0;
					if(st[j]=='a')
					{
						j+=2;
						while(isdigit(st[j]))
						{
							zss=zss*10+st[j]-'0';
							j++;
						}
					}
					xs2[zss]+=xss;
					continue;
				}
				j++;
			}
			memset(ans,0,sizeof(ans));
			for(int i=0;i<=60;i++)
			{
				for(int j=0;j<=30;j++)
				{
					int k=i-j;
					if(k<0)break;
					if(k>30)continue;
					ans[i]+=xs1[j]*xs2[k];
				}
			}
		}
		bool ff=false;
		long long mm=INT_MIN,mn=INT_MAX;
		for(int i=60;i>=0;i--)
		{
			if(ans[i])
			{
				if(!ff)ff=true;
				else
				{
					if(ans[i]>0)cout<<'+';
					else cout<<'-';
				}
				ans[i]=abs(ans[i]);
				if(i)cout<<ans[i]<<"a^"<<i;
				else cout<<ans[i];
			}
			mm=max(mm,ans[i]);
			mn=min(mn,ans[i]);
		}
		cout<<'\n';
	}
	return 0;
}

2022/10/26 13:26
加载中...