题意: 多项式加法,分别输入两行多项式,每一行 k 对<系数 指数>的格式,要求输出相加后的多项式(不好含指数为0的)。
思路:将同系数的指数相加筛选非零项再对系数进行降序输出即可。
AC代码:
#include<bits/stdc++.h>
#define int long long
#define endl '\n'
using namespace std;
const int N = 1e5+10;
int k, a;
double b;
vector<int> x;
map<int, double> mp1, mp2, mp;
signed main()
{
cin >> k;
for(int i = 1; i <= k; i ++){
cin >> a >> b;
mp1[a] = b;
}
cin >> k;
for(int i = 1; i <= k; i ++){
cin >> a >> b;
mp2[a] = b;
}
for(int i = 0; i <= 1000; i ++){
if(mp1[i]+mp2[i]!=0){ // 筛选非零项
x.push_back(i);
mp[i] = mp1[i]+mp2[i];
}
}
sort(x.begin(), x.end());
reverse(x.begin(), x.end()); // 降序
cout << x.size();
for(int i = 0; i < x.size(); i ++){
cout << " " << x[i] << " ";
cout << fixed << setprecision(1) << mp[x[i]];
}
return 0;
}