题目描述
一个一元多项式可以看作由若干个一元单项式按降幂排列成的线性表。请编写程序对输入的两个一元多项式求积,并输出求积的结果。
输入
输入为两个一元多项式,每个一元多项式输入一行,按照降幂依次输入每个单项式的系数和指数,并以-1 -1作为结束。 系数和指数均为整数,指数不小于0。
输出
输出为求积结果多项式,按照降幂依次输出每个单项的系数和指数,每个数值后面用一个空格隔开,输出结果多项式后换行。 系数为0的单项式不得输出——除非结果多项式就是0,则直接输出0。
样例输入 Copy
2 5 1 0 -1 -1
5 4 3 0 -1 -1
样例输出 Copy
10 9 6 5 5 4 3 0
#include<stdio.h>
#include<string.h>
int a[100000],b[100000],c[100000];
int main()
{
int i,j,m=0,n=0,max=0,maxa=0,maxb=0,flag=1;
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
memset(c,0,sizeof(c));
while(scanf("%d %d",&n,&m))
{
if(m==-1&&n==-1)
break;
if(maxa<m)
maxa=m;
a[m]=n;
}
while(scanf("%d %d",&n,&m))
{
if(m==-1&&n==-1)
break;
if(maxb<m)
maxb=m;
b[m]=n;
}
max=maxa+maxb;
for(i=0;i<=maxa;i++)
for(j=0;j<=maxb;j++)
{
n=a[i]*b[j];
if(n!=0)
{
m=i+j;
c[m]+=n;
}
}
for(i=max;i>=0;i--){
if(c[i]!=0){
flag=0;
printf("%d %d ",c[i],i);
}
}
if(flag)
printf("0");
printf("\n");
return 0;
}