1472.求两个多项式的和

题目描述:

输入两个多项式,计算它们的和。
每个多项式有若干对整数表示,每组整数中,第一个整数表示系数(非0),第二个整数表示该项的次数。
如由3 3 5 -2 1 4 0表示3x^5 - 2 * x + 4其中第一个3表示该多项式由三个整数对表示。

输入:

输入为两行,分别表示两个多项式。表示每项的整数对按照次数大小降序给出。(次数绝对值小于1000,系数绝对值小于10000)

输出:

按照降次顺序输出表示和多项式的整数对(系数为0的整数对不用输出,整数对由空格分隔,最后一个整数对后不添加空格)

样例输入:
3 3 5 -2 1 4 0
4 2 3 -1 2 1 1 3 0
样例输出:
3 5 2 3 -1 2 -1 1 7 0
#include<iostream>
#include<cstring>
#include<cstdio> //注意first的处理!!! 
using namespace std;

int xishu1[1001];
int cishu1[1001];
int xishu2[1001];
int cishu2[1001];
int result[1001];
int main(){
    int n,m,i;
    while(cin>>n){
        memset(xishu1,0,sizeof(xishu1));
        memset(cishu1,0,sizeof(cishu1));
        memset(xishu2,0,sizeof(xishu2));
        memset(cishu2,0,sizeof(cishu2));
        memset(result,0,sizeof(result));                        
        for(i=0;i<n;i++)
        {
            cin>>xishu1[i]>>cishu1[i];
        }
        cin>>m;
        for(i=0;i<m;i++)
        {
            cin>>xishu2[i]>>cishu2[i];
        }
        for(i=0;i<n;i++)
        {
            result[cishu1[i]]=xishu1[i];
        }
        for(i=0;i<m;i++)
        {
            result[cishu2[i]]+=xishu2[i];
        }
        int first=1;
        for(i=1000;i>=0;i--)
        {
            if(result[i])
            {
            if(first){
                cout<<result[i]<<" "<<i;
                first=0;
            }
            else cout<<" "<<result[i]<<" "<<i;    
            }
        }
        cout<<endl;
    }
    return 0;
}
原文地址:https://www.cnblogs.com/bernieloveslife/p/9736545.html