简单的多项式相加。用两个数组分别保存,找出最大的下标,逐项相加。
#include<iostream>
using namespace std;
const int num=1005;
double a[num],b[num];
int main()
{
int n,i,index,m;
double val;
int alen=-1,blen=-1,count=0;
scanf("%d",&n);
while(n--){
scanf("%d%lf",&index,&val);
a[index]=val;
if(alen==-1)
alen=index;
}
scanf("%d",&m);
while(m--){
scanf("%d%lf",&index,&val);
b[index]=val;
if(blen==-1)
blen=index;
}
if(alen<blen)
alen=blen;
for(i=alen;i>=0;i--){
a[i]+=b[i];
if(a[i]!=0.0)
count++;
}
printf("%d",count);
for(i=alen;i>=0;i--){
if(a[i]!=0.0)
printf(" %d %.1lf",i,a[i]);
}
return 0;
}