题解
这道题主要犯了两个错误,一个是没有考虑到第二个多项式只有一个项的情况;另一个是没有考虑到如果某个指数所对应的系数为0是不用输出的,且最后也不包括在输出给多项式的个数内。
代码
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int m,n,e[1010],x;
double c[1010],y,a[2010];
int main()
{
cin>>m;
for(int i=0;i<m;i++){
cin>>e[i]>>c[i];
}
cin>>n;
int maxx=0,minn=0;
for(int i=0;i<n;i++){
cin>>x>>y;
if(i==0){
maxx=x+e[0];
}
//第一个错误是这里用了else if,如果第二行K=1会出现问题
if(i==n-1){
minn=x+e[m-1];
}
for(int j=0;j<m;j++){
a[e[j]+x]+=c[j]*y;
}
}
//还有一种情况是,如果等于零,则不输出
int countt=0;
for(int i=maxx;i>=minn;i--){
if(a[i])
countt++;
}
cout<<countt;
for(int i=maxx;i>=minn;i--){
if(a[i]!=0)
printf(" %d %.1f",i,a[i]);
}
return 0;
}