为什么把第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;
}