#include<iostream>
#include<map>
#include<string>
#include<iomanip>
using namespace std;

int main(){
    int flag=0;
    int num1=0;
    int i1=0;
    double d1=0;
    map<int,double> map1;
    while(true){
        if(flag==0){
            cin>>num1;
        }
        else{
            cin>>i1>>d1;
            map1[i1]=d1;
        }
        if(flag==num1)
            break;
        flag++;
    }
    flag=0;
    int num2=0;
    int i2=0;
    double d2=0;
    map<int,double> map2;
    while(true){
        if(flag==0){
            cin>>num2;
        }
        else{
            cin>>i2>>d2;
            map2[i2]=d2;
        }
        if(flag==num2)
            break;
        flag++;
    }
    
    map<int,double>::iterator iter1=map1.begin();
    map<int,double>::iterator iter2=map2.begin();
    map<int,double> map3;
    while(iter1!=map1.end() && iter2!=map2.end()){
        if((*iter1).first > (*iter2).first){
            map3[(*iter2).first]=(*iter2).second;
            iter2++;
        }
        else if((*iter1).first == (*iter2).first){
            map3[(*iter2).first]=(*iter2).second + (*iter1).second;
            iter1++;
            iter2++;
        }
        else{
            map3[(*iter1).first]=(*iter1).second;
            iter1++;
        }
    }
    for(;iter1!=map1.end();iter1++){
        map3[(*iter1).first]=(*iter1).second;
    }
    for(;iter2!=map2.end();++iter2){
        map3[(*iter2).first]=(*iter2).second;
    }
    for(map<int,double>::iterator iter3=map3.begin();iter3!=map3.end();){
        if((*iter3).second == 0){
            map3.erase(iter3++);
        }
        else
            ++iter3; 
    }
    cout<<map3.size();
    if(map3.size()!=0){
    for(map<int,double>::iterator iter3=(--map3.end());;--iter3 ){
        cout<<" ";
        cout<<(*iter3).first<<" "<<fixed<<setprecision(1)<<(*iter3).second;  //单单使用setprecision(n)就是保留n个数,如果加fixed就是保留n位小数 ,四舍五入 
        
        if(iter3==map3.begin())
            break;
    }
    }
    
    return 0;
}

PAT1002个人感觉思路比较简单,没有什么复杂的算法思路,就是小坑多,比如:

1.如果A+B之后,系数为0的项要去掉

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

2.输出格式问题 ,保留一位小数(菜鸡如我,一开始还不知道不加fixed的话,保留的数字位数是指所有数字的位数,包含整数和小数的位数)

 

当然,我这里使用map来做,不熟悉STL的话用数组和下标来做应该也挺快的

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄