码迷,mamicode.com
首页 > 其他好文 > 详细

1472.求两个多项式的和

时间:2018-10-02 17:32:21      阅读:152      评论:0      收藏:0      [点我收藏+]

标签:names   eof   顺序   soft   memset   ica   iostream   整数   处理   

题目描述:

输入两个多项式,计算它们的和。
每个多项式有若干对整数表示,每组整数中,第一个整数表示系数(非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;
}

 

1472.求两个多项式的和

标签:names   eof   顺序   soft   memset   ica   iostream   整数   处理   

原文地址:https://www.cnblogs.com/bernieloveslife/p/9736545.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!