注意!
相乘后的最大项为2000因此数组要开到2001否则有几个测试点无法通过
#include<iostream>
#include<stdio.h>
using namespace std;
int main()
{
double a[1001] = { 0 }, b[1001] = { 0 }, c[2001] = { 0 },n;
int N, M, m, num = 0;
cin >> N;
for (int i = 0; i < N; i++) {
cin >> m >> n;
a[m] = n;
}
cin >> M;
for (int i = 0;i<M; i++) {
cin >> m >> n;
b[m] = n;
}
for(int i=0;i<1001;i++)
for (int j = 0; j < 1001; j++) {
c[i + j] += a[i] * b[j];
}
for (int i = 0; i < 2001; i++)
if (c[i] != 0)
num++;
cout << num;
for (int i = 2000; i >= 0; i--){
if (c[i] != 0) {
cout << " " << i <<" " ;
printf("%.1lf", c[i]);
}
}
return 0;
}