pat甲级 1002 A+B for Polynomials

首先是生僻词汇:polynomials 多项式    exponents 指数     respectively 分别

这道题的大致意思是每次测试一组测试用例,一组测试用例有两个一个是一行,每一行包含一个多项式的信息:

K N1 aN1 N2 aN2…NK aNK

K是多项式的非零项的数量,aNi和Ni(i = 1 2⋯,K)分别是指数和系数。1<=k<=10,0<=Nk<=1000。

 

这道题最大的坑就是这道题只给出了Ni的取值范围,没有给出aNi的取值范围,所以需要过滤掉相加后aNi为0的这种情况。另外题目给出的就是标准多项式,在读取第一个数的时候根本不需要考虑多个Ni的值相同的情况,我多写了,不过也是对的。

下面是ac代码:

#include<iostream>
#include<cstdio>
#include<map>
using namespace std;

int main(){
    map<int,double> mapp;
    int a;
    cin>>a;
    double x,y;
    int flag=0;
    for(int i=0;i<a;i++){
        cin>>x>>y;
        if(!mapp[x]){
            flag++;
            mapp[x]=y;
        }
        else {
        mapp[x]+=y;
        if(mapp[x]==0){
            flag--;
        } 
        } 
    } 
    int b;
    cin>>b;
    for(int i=0;i<b;i++){
        cin>>x>>y;
        if(!mapp[x]){
            flag++;
            mapp[x]=y;
        }
        else {
        mapp[x]+=y;
        if(mapp[x]==0){
            flag--;
        } 
        } 
    }
    cout<<flag;
    for(int i=1000;i>=0;i--){
        if(mapp[i]!=0){
            printf(" %d %.1lf",i,mapp[i]);
        }
    }
} 

 

posted @ 2018-11-13 17:02  fromzore  阅读(168)  评论(0编辑  收藏  举报