题目链接:https://pintia.cn/problem-sets/994805342720868352/problems/994805526272000000
题目大意:给你两个多项式A和B,计算一下二者的和。输入格式是 非0项数k 指数Ni 系数ai (i=1,2…k)
思路:用map记录。注意一下系数相加为0时无需输出且不计入cnt。
#include<bits/stdc++.h>
using namespace std;
map<int,double> mp;
set<int,greater<int> > s;
int x,n,p,cnt;
double y;
int main() {
// while(1) {
s.clear();
mp.clear();
int t=2;
while(t--) {
cin>>n;
for(int i=1; i<=n; i++) {
cin>>x>>y;//指数和系数
if(mp.count(x))
mp[x]+=y;
else
mp[x]=y;
}
}
map<int,double>::iterator it;
for(it=mp.begin();it!=mp.end();it++){ //计算项数
if(it->second!=0.0) cnt++;
}
printf("%d",cnt);
map<int,double>::reverse_iterator it2;
for(it2=mp.rbegin(); it2!=mp.rend(); it2++) {
if(it2->second!=0.0)
printf(" %d %.1lf",it2->first,it2->second);
}
// }
}