作业训练三
编程题
12. 多项式加法
【问题描述】
一个多项式可以表示为一组数对,数对中第一个数始终为整数,且唯一,表示多项式的次数,另一数表示为对应的系数且不为0。输入两组数对,每组以0 0作为结束,实现对两个多项式的加法并按降幂输出结果数对
【输入形式】
每行输入一个数对,以空格为分隔符,以0 0结束
【输出形式】
每行输出一个数对,以空格为分隔符
【样例输入】
5 12
3 8
1 2
15 5
0 10
0 0
3 12
30 1
15 5
0 0
【样例输出】
30 1
15 10
5 12
3 20
1 2
0 10
#include <iostream>
#include <algorithm>
#include <vector>
#include <map>
using namespace std;
bool cmp(pair<int, double> a, pair<int, double> b) {
return a.first > b.first;
}
int main() {
int a;
double b;
map<int, double> mp;
while (1) {
cin >> a >> b;
if (a == 0 && b == 0) break;
mp[a] += b;
}
while (1) {
cin >> a >> b;
if (a == 0 && b == 0) break;
mp[a] += b;
}
vector<pair<int, double> > vec;
for (auto& m : mp) {
vec.emplace_back(m);
}
sort(vec.begin(), vec.end(), cmp);
for (auto& v : vec) {
cout << v.first << " " << v.second << endl;
}
}