#include <iostream>
#include <cstdio>
#include <string>
#include <cstring>
#include <cstdlib>
#include <vector>
using namespace std;
int a[10000001],b[10000001],zhongjian[10000];
int main()
{
int i,j,jishu=2,n,m;//n为当前多项式的阶数,m为新的多项式的阶数,ij为计数变量,jishu为记下第几个多项式专用
printf("请输入第1个多项式的阶数:");
scanf("%d",&n);
printf("请输入每一项的系数:");
for(i=n;i>=0;i--)//输入当前多项式的阶数
scanf("%d",&a[i]);
printf("请输入第2个多项式的阶数:");
while(~scanf("%d",&m),m)
{
memset(zhongjian,0,sizeof(zhongjian));
jishu++;//新的多项式
printf("请输入每一项的系数:");
for(i=m;i>=0;i--)//输入新的多项式的阶数
scanf("%d",&b[i]);
//开始整合运算
for(i=0;i<=n;i++)
for(j=0;j<=m;j++)
zhongjian[i+j]=zhongjian[i+j]+a[i]*b[j];
for(i=0;i<=m+n;i++)//把计算好的多项式放在a中
a[i]=zhongjian[i];
printf(" f(x)= ");
for(i=m+n;i>=0;i--)
{
if(i==m+n)
{
if(a[i]!=1&&a[i]!=0)
printf("%d x^%d ",a[i],i);
else if(a[i]==1)
printf("x^%d ",i);
}
else if(i>1&&a[i]>0&&i!=m+n)
{
if(a[i]!=1)
printf("+ %d x^%d ",a[i],i);
else
printf("+ x^%d ",i);
}
else if(i>1&&a[i]<0&&i!=m+n)
{
if(a[i]!=1)
printf("%d x^%d ",a[i],i);
else
printf("x^%d ",i);
}
else if(i==1&&a[i]>0)
{
if(a[i]!=1)
printf("%+ d x ",a[i],i);
else
printf("+ x ",i);
}
else if(i==1&&a[i]<0)
{
if(a[i]!=1)
printf("%d x ",a[i],i);
else
printf("x ",i);
}
else if(i==0&&a[i]>0)
printf(" + %d ",a[0]);
else if(i==0&&a[i]<0)
printf("%d ",a[0]);
}
printf("\n\n请输入第%d个多项式的阶数:",jishu);
}
return 0;
}
//该代码利用的就是模拟