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

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

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


输入格式:

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


输出格式:

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


样例">样例">输入样例:

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


输出样例:

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


思路:根据多项式的计算过程模拟一下就行了,坑点是数组要开到2000以上

#include<bits/stdc++.h>
using namespace std;
const int N=2010;//开1010有一个点过不去,比如x^1000*x^1000=x^2000
int a[N],b[N],c[N],d[N],f1[N],f2[N];
int n,m;
int main()
{
    cin>>n;
    for(int i=0;i<n;i++) cin>>a[i]>>b[i],f2[b[i]]+=a[i];//输入并求和
    cin>>m;
    for(int i=0;i<m;i++) cin>>c[i]>>d[i],f2[d[i]]+=c[i];
    for(int i=0;i<n;i++)//多项式乘法运算
    {
        for(int j=0;j<m;j++)
        {
            f1[b[i]+d[j]]+=a[i]*c[j];
        }
    }
    int f=0;
    for(int i=N;i>=0;i--)
    {
        if(f1[i])
        {
            if(f++) cout<<' ';//控制空格并标记
            cout<<f1[i]<<' '<<i;
        }
    }
    if(!f) cout<<"0 0";//零多项式
    cout<<endl;
    int t=0;
    for(int i=N;i>=0;i--)
    {
        if(f2[i])
        {
            if(t++) cout<<' ';
            cout<<f2[i]<<' '<<i;
        }
    }
    if(!t) cout<<"0 0";
    return 0;
}
目录
相关文章
|
4月前
|
Python
首先,我们可以从基本的数学运算开始,比如加法、减法、乘法、除法等。
首先,我们可以从基本的数学运算开始,比如加法、减法、乘法、除法等。
|
5月前
|
BI
1051 复数乘法 (15 分)
1051 复数乘法 (15 分)
|
5月前
1034 有理数四则运算 (20 分)
1034 有理数四则运算 (20 分)
|
6月前
|
计算机视觉
加法运算
【5月更文挑战第8天】加法运算。
120 4
|
6月前
leetcode-592:分数加减运算
leetcode-592:分数加减运算
53 0
|
6月前
|
存储 C++
[C++/PTA] 矩阵的乘法运算
[C++/PTA] 矩阵的乘法运算
145 0