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;
}
目录
相关文章
|
12天前
|
BI
1051 复数乘法 (15 分)
1051 复数乘法 (15 分)
|
1月前
|
计算机视觉
加法运算
【5月更文挑战第8天】加法运算。
19 4
LeetCode-592 分数加减运算
LeetCode-592 分数加减运算
|
1月前
leetcode-592:分数加减运算
leetcode-592:分数加减运算
26 0
|
8月前
|
机器学习/深度学习
什么是浮点数加减运算里的对阶,阶码和尾数
什么是浮点数加减运算里的对阶,阶码和尾数
|
存储 Java 大数据
7-237 有理数加法 (15 分)
7-237 有理数加法 (15 分)
85 0
7-41 大数的乘法 (10 分)
7-41 大数的乘法 (10 分)
57 0