Description
给定一个多项式,输出其化简后的结果。
Input
一个字符串,只含有关于字母x 的多项式,不含括号与分式,没有多余的空格。
Output
一个字符串,化简后的多项式,按照次数从大到小的顺序输出各项。
Input Sample
x^3+3*x^4-2*x^3+1-x
Output Sample
3*x^4-x^3-x+1
Hint
每项系数10,次数6,项数20。字符串长度不超过100。
很烦的模拟 代码如下:
#includeiostream
#includecstdio
using namespace std;
const int maxn=1000+10;
string s;
int a[maxn],lc=1,len;
bool first=true;
int main()
{
// freopen("simplify.in","r",stdin);
// freopen("simplify.out","w",stdout);
cins;
len=s.size();
if(len==1)
{
couts[0];
return 0;
}
for(int i=0;ilen;i++)
{
if(s[i]=='x')
{
if(i==3)
{
if(s[0]=='-')
{
if(s[4]=='^')
{
a[s[5]-'0']-=s[1]-'0';
}
else
{
a[1]-=s[1]-'0';
}
continue;
}
}
if(s[0]='0's[0]='9'i==2)
{
if(s[3]=='^')
{
a[s[4]-'0']+=s[0]-'0';
}
else
{
a[1]+=s[0]-'0';
}
continue;
}
// if(i==0)
// {
// a[1]++;
// continue;
// }
if(s[i+1]=='^')
{
if(i==0)
{
a[s[i+2]-'0']++;
continue;
}
if(s[i-1]=='*')
{
if(s[i-3]=='+')
a[s[i+2]-'0']+=s[i-2]-'0';
else if(s[i-3]=='-')
a[s[i+2]-'0']-=(s[i-2]-'0');
}
else
{
if(i==0)
{
a[s[i+2]-'0']++;
continue;
}
if(s[i-1]=='+'||s[i-1]=='-')
{
if(s[i-1]=='-')
a[s[i+2]-'0']--;
else
a[s[i+2]-'0']++;
}
else
{
a[s[i+2]-'0']--;
}
}
}
else
{
if(s[i-1]=='+')
{
a[1]++;
}
else
{
a[1]--;
}
}
}
else
{
if(s[i]='0's[i]='9')
{
if(s[i-1]=='^'||s[i+1]=='*')
continue;
a[0]+=s[i]-'0';
}
}
}
for(int i=0;ilen;i++)
{
if(s[i]=='^')
lc=max(lc,s[i+1]-'0');
}
for(int i=lc;i=0;i--)
{
if(a[i]==0)
continue;
if(i==0)
{
if(a[i]0)
{
if(first)
{
couta[i];
first=false;
continue;
}
cout'+'a[i];
}
else
{
cout'-'a[i];
}
continue;
}
if(i==1)
{
if(a[i]0)
{
if(a[i]==1)
{
if(first)
{
cout"x";
first=false;
continue;
}
cout"+x";
}
else
{
if(first)
{
couta[i]"*x";
first=false;
continue;
}
cout"+"a[i]"*x";
}
}
else
{
if(a[i]==-1)
{
cout"-x";
}
else
{
couta[i]"*x";
}
}
continue;
}
if(a[i]0)
{
if(a[i]==1)
{
if(first)
{
cout"x^"i;
first=false;
continue;
}
else
{
cout"+x^"i;
}
}
else
{
if(first)
{
couta[i]"*x^"i;
first=false;
continue;
}
else
{
cout"+"a[i]"*x^"i;
cout9999999endl;
}
}
}
else
{
if(a[i]==-1)
{
cout"-x^"i;
}
else
{
couta[i]"*x^"i;
}
}
}
// coutendl;
// for(int i=8;i=0;i--)
// couta[i]' ';
// coutendl;
// couta[3]endl;
return 0;
}
转载于:https://www.cnblogs.com/luowenqing/p/4469684.html