您的位置:首页 > 其它

7-2 一元多项式的乘法与加法运算

2018-02-11 22:52 197 查看
Written by Robert_Wang in Southwest University of Science And Technology.

7-2 一元多项式的乘法与加法运算(20 分)

设计函数分别求两个一元多项式的乘积与和。

输入格式:

输入分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
分析:
乘法:需要将两组数据分别相乘,并且要合并同类项。
加法:指数相同的,将系数相加即可。
技巧:用结构体数组表示输入的数据,并用两个数组表示寄存器(大学计算机之思维导论的知识,不懂得自行百度),数组下标表示指数,数组的值表示系数。#include<iostream>
#include<cstdio>
using namespace std;
struct {
int co;//系数
int ex;//指数
}p[1005];
int main()
{
int i,j,n,m;
int co1,ex1;
int plus[2005]={0},multi[2005]={0};
cin>>n;
for(i=0;i<n;i++){
cin>>p[i].co>>p[i].ex;
plus[p[i].ex]+=p[i].co;
}
cin>>m;
for(i=0;i<m;i++){
cin>>co1>>ex1;
plus[ex1]+=co1;//加法,指数相同的,系数相加
for(j=0;j<n;j++){
multi[ex1+p[j].ex]+=(co1*p[j].co);//乘法,指数相加,系数相乘,由于会出现多项式系数相同的,所以用+=
}
}
int Isfirst = 1,Isempty=1;
for(i=2000;i>=0;i--){//输出乘积
if(multi[i]){
if(!Isfirst) cout<<" "<<multi[i]<<" "<<i;
else {
cout<<multi[i]<<" "<<i;
Isfirst = 0;
}
Isempty=0;
}

}
if(Isempty) cout<<"0 0";
putchar('\n');
Isfirst = 1,Isempty=1;
for(i=1000;i>=0;i--){//输出和
if(plus[i]){
if(!Isfirst) cout<<" "<<plus[i]<<" "<<i;
else {
cout<<plus[i]<<" "<<i;
Isfirst = 0;
}
Isempty=0;
}

}
if(Isempty) cout<<"0 0";
putchar('\n');
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: