题目描述:
给出两个多项式的各个项的次数和系数,要求将两个多项式进行相加,并输出相加后的多项式各个项的次数和系数。
解题思路:
使用map存储多项式各个项的次数对应的系数。进行多项式相加时只要将相同次数的项的系数进行相加即可。
注意要点:
相加以后,如果某一项系数变为零,则不输出系数为零的项。
#include <cstdio>
#include <map>
using namespace std;
int main()
{
map<int,double> m;
//第一次输入
int N;
scanf("%d",&N);
for(int i=0;i<N;++i)
{
int exp;
double coeff;
scanf("%d%lf",&exp,&coeff);
m[exp]+=coeff;
}
//第二次输入以后,如果系数为零,则将这一项删除
scanf("%d",&N);
for(int i=0;i<N;++i)
{
int exp;
double coeff;
scanf("%d%lf",&exp,&coeff);
m[exp]+=coeff;
if(0==m[exp])
m.erase(exp);
}
printf("%d",m.size());
for(auto iter=m.rbegin();iter!=m.rend();++iter)
if(0!=iter->second)
printf(" %d %.1f",iter->first,iter->second);
return 0;
}