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

来源:互联网 发布:nodejs mysql vue 编辑:程序博客网 时间:2024/06/05 16:42

点击打开链接

因为数据比较小,所以可以用数组来模拟,数组坐标表示指数,数组大小表示系数

#include<stdio.h>#include<stdlib.h>#include<iostream>using namespace std;#define N 10005int main(){    int a[N]={0};    int b[N]={0};    int c[N]={0};    int d[N]={0};    int i,m,f;    cin>>i;    while(i--)    {        cin>>m>>f;        a[f]+=m;    }    cin>>i;    while(i--)    {        cin>>m>>f;        b[f]+=m;    }    for(int i=0;i<N;i++)    {        if(a[i])        {            for(int j=0;j<N;j++)            {                if(b[j])                    c[i+j]+=a[i]*b[j];            }        }    }    int cnt=0;    for(int i=N-1;i>=0;i--)    {        if(c[i])        {            if(cnt)               cout<<" ";            cout<<c[i]<< " "<<i;            cnt++;        }    }    if(!cnt) printf("0 0");    for(int i=0;i<N;i++)    {        if(a[i])            d[i]+=a[i];    }    for(int j=0;j<N;j++)    {        if(b[j])            d[j]+=b[j];    }    cout<<endl;        cnt=0;    for(int i=N-1;i>=0;i--)    {        if(d[i])        {            if(cnt)               cout<<" ";            cout<<d[i]<< " "<<i;            cnt++;        }    }    if(!cnt) printf("0 0");}