1、来,先看题,https://www.patest.cn/contests/pat-a-practise/1002。
2、需要注意的地方只有一个:两个多项式相加之后,系数可能为零,这些项不应该出现在输出中,也不应该算在总的项数内。
接下来,就是一顿无脑暴力了:
#include<iostream>
#include<iomanip>
using namespace std;
typedef struct {
int expo;
double coef;
} node;
int ka,kb;
node a[],b[];
int exist(node n) {
for(int i=; i<ka; i++) if(a[i].expo==n.expo) return i;
return -;
}
int main(void) {
cin>>ka;
for(int i=; i<ka; i++) cin>>a[i].expo>>a[i].coef;
cin>>kb;
for(int i=; i<kb; i++) cin>>b[i].expo>>b[i].coef;
int len=ka;
for(int i=; i<kb; i++) {
if(exist(b[i])!=-) a[exist(b[i])].coef+=b[i].coef;
else {
a[len].expo=b[i].expo;
a[len++].coef+=b[i].coef;
}
}
for(int i=; i<len; i++) {
for(int j=i+; j<len; j++) {
if(a[j].expo>a[i].expo) {
double c=a[i].coef;
int e=a[i].expo;
a[i].coef=a[j].coef;
a[i].expo=a[j].expo;
a[j].coef=c;
a[j].expo=e;
}
}
}
int count=;
for(int i=; i<len; i++) {
if(a[i].coef) count++;
}
cout<<count;
for(int i=; i<len; i++)
if(a[i].coef!=)
printf(" %d %.1lf",a[i].expo,a[i].coef);
cout<<endl;
}
其实,只要做好“零系数”这个特殊情况的处理,就不会报错了。