7-3 一元多项式的乘法与加法运算 (15 分)(简易做法,数组)

习题3.6 一元多项式的乘法与加法运算
设计函数分别求两个一元多项式的乘积与和。

输入格式:

输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。

输出格式:

输出分2行,分别以指数递降方式输出乘积多项式以及和多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。零多项式应输出0 0。

输入样例:

4 3 4 -5 2 6 1 -2 0
3 5 20 -7 4 3 1

输出样例:

15 24 -25 22 30 21 -10 20 -21 8 35 6 -33 5 14 4 -15 3 18 2 -6 1
5 20 -4 4 -5 2 9 1 -2 0

思路:设计两个数组存放数据,读入时完成加法运算,对每个a组数据去搜索所有b组数据,存至乘积数组
AC代码:
#include
using namespace std;
int a[1010],b[1010],add[2020],mul[2020];
int main()
{
     
	ios::sync_with_stdio(false);
	cin.tie(0);
	int n,x,y;
	cin>>n;
	while(n--) 
	{
     
		cin>>x>>y;
		a[y]+=x;	//下标为指数,值为系数 
		add[y]+=x;
	}
	cin>>n; 
	while(n--) 
	{
     
		cin>>x>>y;
		b[y]+=x;
		add[y]+=x;
	}
	for(int i=0;i<1010;i++)
		if(a[i])
			for(int j=0;j<1010;j++)
				if(b[j])
					mul[i+j]+=a[i]*b[j];//指数相加,系数相乘 
	int t=0;
	for(int i=2000;i>=0;i--)	//*	指数递减输出
		if(mul[i])
		{
     
			if(t) 
				cout<<' ';
			cout<<mul[i]<<' '<<i;
			t=1;
		}
	if(!t)
        cout<<"0 0";
	cout<<endl;
	t=0;	
	for(int i=2000;i>=0;i--)	//+
		if(add[i])
		{
     
			if(t) 
				cout<<' ';
			cout<<add[i]<<' '<<i;
			t=1;
		}
	if(!t)
        cout<<"0 0";
}

你可能感兴趣的:(C++,c++)