这个题目是在大神同学的帮助下完成的,刚开始的时候自己没有读懂题目的意思,后来在同学的讲解下我明白了意思(明白意思之后感觉自己好菜啊,自己也确实是菜鸟),哈哈。
首先,定义了几个数组,分别用来存放输入的两个多项式的系数和指数、相加后的新的多项式的系数和指数、相乘后的新的多项式的系数和指数。然后,**用数组元素对应的下标值表示多项式的指数,数组元素的值表示其指数相对应的系数,这一点可以说是解题的关键**。然后通过循环等一系列操作就得到相乘后的多项式、相加后的多项式的系数和指数,用规定的格式输出便可。下面上代码:
#include<bits/stdc++.h>
using namespace std;
int x[1001],y[1001],z[1001],p[6000];
int main()
{
int m,n,a,b;
cin>>m;
for(int i=0;i<m;i++)
{
cin>>a>>b;
x[b]=a;
}
cin>>n;
for(int i=0;i<n;i++)
{
cin>>a>>b;
y[b]=a;
}
for(int i=0;i<=1000;i++)
{
z[i]=x[i]+y[i];
}
for(int i=0;i<=1000;i++)
{
if(x[i]!=0)
{
for(int j=0;j<=1000;j++)
{
if(y[j]!=0)
{
p[i+j]+=x[i]*y[j];
}
}
}
}
int f=1;
int count=0;
for(int i=2000;i>=0;i--)
{
if(p[i]!=0)
{
if(f)
{
cout<<p[i]<<" "<<i;
f=0;
}
else
{
cout<<" "<<p[i]<<" "<<i;
}
count++;
}
}
if(count==0)
{
cout<<"0 0";
}
cout<<endl;
int f1=1;
int count1=0;
for(int i=1000;i>=0;i--)
{
if(z[i]!=0)
{
if(f1)
{
cout<<z[i]<<" "<<i;
f1=0;
}
else
{
cout<<" "<<z[i]<<" "<<i;
}
count1++;
}
}
if(count1==0)
{
cout<<"0 0";
}
return 0;
}
