这道题目非常简单就是给两个多项式,我们只需要把这两个多项式相加并输出即可,我定义了一个ans数组用来记录每一项的系数是多少,而ans中的下标代表这一项的指数,比如ans[1]就存着指数为1的系数,在输入时我们直接把两个多项式的系数输入即可。
由于题目中输入已经是指数递减的情况,所以我们只需要存一下这两行第一个指数,最后就从这个指数递减寻找系数不为0的项输出即可。
#include<cstdio>
using namespace std;
int k1,k2;
double ans[1005];
int main() {
scanf("%d",&k1);
int x,res=0;
double y;
for(int i=1;i<=k1;i++) {
scanf("%d%lf",&x,&y);
if(i==1&&x>res) res=x;
ans[x]+=y;
}
scanf("%d",&k2);
for(int i=1;i<=k2;i++) {
scanf("%d%lf",&x,&y);
if(i==1&&x>res) res=x;
ans[x]+=y;
}
int d=0;
for(int i=res;i>=0;i--) {
if(ans[i]) d++;
}
printf("%d",d);
for(int i=res;i>=0;i--) {
if(ans[i]) printf(" %d %.1lf",i,ans[i]);
}
return 0;
}