此题一个数组可以解决
但是要运用要结构体 这样才能解决到逐个相乘
还有就是数组定义最好在外面
不然输出会错误
#include<cstdio>
#include<algorithm>
using namespace std;
struct Poly{
int a;
double b;
}Poly[1001];
double s[2001];
int main()
{
int i,j;
//double s[2001];
int m,n,p;
double k,q;
scanf("%d",&m);
for(i=0;i<m;i++)
{
scanf("%d %lf",&Poly[i].a,&Poly[i].b);
}
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d %lf",&p,&q);
for(j=0;j<m;j++)
{
s[p+Poly[j].a]+=(q*Poly[j].b);
}
}
int count=0;
for(i=0;i<2001;i++)
{
if(s[i]!=0.0)
count++;
}
printf("%d",count);
for(i=2000;i>=0;i--)
{
if(s[i]!=0.0)
printf(" %d %.1f",i,s[i]);
}
return 0;
}