一道水题 遍历即可
#include<bits/stdc++.h>
using namespace std;
const int MAXN = 2002;
double result[MAXN];
struct node
{
int exponent;
double coefficient;
}a[1001],b[1001];
int main(void)
{
int n,m;
freopen("pat0314/in.txt","r",stdin);
cin>>n;
int maxExponent = -1;
for(int i = 0;i<n;i++)
{
int exponent;
double coefficient;
cin>>exponent>>coefficient;
a[i].exponent = exponent;
a[i].coefficient = coefficient;
}
cin>>m;
for(int i = 0;i<m;i++)
{
int exponent;
double coefficient;
cin>>exponent>>coefficient;
b[i].exponent = exponent;
b[i].coefficient = coefficient;
}
for(int i = 0;i<n;i++)
{
for(int j = 0;j<m;j++)
{
if(a[i].exponent + b[j].exponent > maxExponent)
{
maxExponent = (a[i].exponent + b[j].exponent);
}
result[a[i].exponent + b[j].exponent] += a[i].coefficient * b[j].coefficient * 1.0;
}
}
int num = 0;
for(int i = maxExponent;i>=0;i--)
{
if(result[i] != 0)
{
num++;
}
}
printf("%d",num);
for(int i = maxExponent;i>=0;i--)
{
if(result[i] != 0)
{
printf(" %d %.1f",i,result[i]);
}
}
return 0;
}