Pat1002 A+B for Polynomials(25)
2018-07-24 本文已影响0人
zjh3029
#include <iostream>
#include <map>
#include <iomanip>
using namespace std;
int main()
{
int input_a;
int count_a, count_b;
double input_b;
map<int, double> get_res;
map<int, double>::iterator iter;
cin >> count_a;
for (int i = 0; i < count_a; i++)
{
cin >> input_a >> input_b;
get_res.insert(pair<int, double>(input_a, input_b));
}
cin >> count_b;
for (int i = 0; i < count_b; i++)
{
cin >> input_a >> input_b;
iter = get_res.find(input_a);
if (iter!=get_res.end())//代表查找成功
{
iter->second += input_b;
}
else
{
get_res.insert(pair<int, double>(input_a, input_b));
}
if ((iter->second==0))//注意可能系数相加的结果存在0,此时需要删除操作
{
get_res.erase(iter);
}
}
//需要倒序输出
map<int, double>::reverse_iterator rev_iter = get_res.rbegin();
cout << get_res.size();
while (rev_iter != get_res.rend())
{
cout << " " << rev_iter->first << " " << setiosflags(ios::fixed) << setprecision(1) << rev_iter->second;
rev_iter++;
}
return 0;
}