解题代码:
#include<bits/stdc++.h>
using namespace std;
struct polynomials{
int expn;
double coef;
}poly_1[13],poly_2[13],poly_3[2003];
int main(){
int n1,n2;
scanf("%d",&n1);
for(int i=0;i<n1;i++)scanf("%d%lf",&poly_1[i].expn,&poly_1[i].coef);
scanf("%d",&n2);
for(int i=0;i<n2;i++)scanf("%d%lf",&poly_2[i].expn,&poly_2[i].coef);
int i=0,j=0,cnt=0;
for(i=0;i<n1;i++){
for(j=0;j<n2;j++){
poly_3[poly_1[i].expn+poly_2[j].expn].coef+=poly_1[i].coef*poly_2[j].coef;
}
}
for(int i=0;i<2003;i++){
if(poly_3[i].coef!=0)cnt++;
}
printf("%d",cnt);
for(int p=2002;p>=0;p--){
if(poly_3[p].coef!=0)
printf(" %d %.1f",p,poly_3[p].coef);
}
return 0;
}
写给自己:按照自己的想法,开2000的数组就好了。