思路:多项式加法,指数 <= 1000。故直接开数组来存储多项式,
相同指数的系数相加。先统计系数不为0的项数输出,然后按
指数从高到低输出不为0的项。
心得:这里其实是根据题目进行了取巧,但是当指数范围很广又
很稀疏的情况下,就很耗内存了。这种情况可以用<unordered_map>
来实现。
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
int k, exp;
double coe;
vector<double> items(1001,0);
cin >> k;
for(int i = 0; i < k; ++i){
cin >> exp >> coe;
items[exp] += coe;
}
cin >> k;
for(int i = 0; i < k; ++i){
cin >> exp >> coe;
items[exp] += coe;
}
int cnt = 0;
for(auto &it : items){
if(it != 0)
cnt++;
}
cout << cnt;
for(int i = 1000; i >= 0; --i){
if(items[i] != 0)
printf(" %d %.1f", i, items[i]);
}
}