这个题大概就是让你算两个多项式之后
考虑了一下 用map算出来了 但是有个问题就是map内部是按从小到大排序的
这个题要求指数从大到小输出,我不知道有什么快捷的办法 就令建了两个数组这样。。。
#include<stdio.h>
#include<map>
#include<algorithm>
using namespace std;
int main(){
map<int,double>mp;
int n;scanf("%d",&n);
int e;
double c;
for(int i=0;i<n;i++){
scanf("%d %lf",&e,&c);
mp[e]=c;
}
int m;scanf("%d",&m);
for(int i=0;i<m;i++){
scanf("%d %lf",&e,&c);
if(mp.find(e)!=mp.end()){
mp[e]=mp[e]+c;
}
else{
mp[e]=c;
}
}
for(map<int,double>::iterator it=mp.begin();it!=mp.end();it++){
if(it->second==0) mp.erase(it);
}
printf("%d",mp.size());
int a[100];
double b[100];
int count=0;
for(map<int,double>::iterator it=mp.begin();it!=mp.end();it++){
a[count]=it->first;
b[count]=it->second;
count++;
}
for(int i=count-1;i>=0;i--){
printf(" %d %.1f",a[i],b[i]);
}
return 0;
}
本文探讨了使用C++ map进行多项式运算的方法,并解决了一个关键问题:如何将map默认的小到大排序调整为适合多项式输出的大到小排序。通过创建额外的数组并逆序输出,成功实现了多项式的正确显示。
278

被折叠的 条评论
为什么被折叠?



