7-2 一元多项式的乘法与加法运算
2018-02-11 22:52
197 查看
Written by Robert_Wang in Southwest University of Science And Technology.
乘法:需要将两组数据分别相乘,并且要合并同类项。
加法:指数相同的,将系数相加即可。
技巧:用结构体数组表示输入的数据,并用两个数组表示寄存器(大学计算机之思维导论的知识,不懂得自行百度),数组下标表示指数,数组的值表示系数。#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;
}
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;
}
相关文章推荐
- 3-04. 一元多项式的乘法与加法运算(20)
- 5-2 一元多项式的乘法与加法运算
- 02-线性结构1 一元多项式的乘法与加法运算
- 5-2 一元多项式的乘法与加法运算 (20分)
- 一元多项式的乘法与加法运算
- 线性结构2 一元多项式的乘法与加法运算
- 一元多项式的乘法与加法运算
- PTA--一元多项式的乘法与加法运算
- 网易云课堂-陈越、何钦铭-数据结构-2016春,02-线性结构1 一元多项式的乘法与加法运算,学习笔记
- PTA 一元多项式的乘法与加法运算
- 一元多项式的乘法与加法运算 PTA02-线性结构1
- 习题3.6 一元多项式的乘法与加法运算
- 一元多项式的乘法与加法运算——链表实现
- 5-2 一元多项式的乘法与加法运算*(格式问题)
- 02-线性结构2 一元多项式的乘法与加法运算 (20分)
- 数据结构基础 一元多项式的乘法与加法运算
- C++ 02-线性结构2 一元多项式的乘法与加法运算
- 02-线性结构2 一元多项式的乘法与加法运算(20 分) 用结构数组的方法
- 02-线性结构2 一元多项式的乘法与加法运算
- 02-线性结构2 一元多项式的乘法与加法运算