#include<vector>
#include<map>
#include<iostream>
using namespace std;
typedef pair<int,double> P;
int cnt = 0;
int main () {
vector<P>A;
vector<P>B;
map<int,double>res;
int n, exp, test = 2;
double coff;
cin >> n;
for(int i = 0 ; i < n;i ++) {
cin >> exp >> coff;
A.push_back(P(exp, coff));
}
cin >> n;
for(int i = 0 ; i < n;i ++) {
cin >> exp >> coff;
B.push_back(P(exp, coff));
}
for(int i = 0;i < A.size(); i++) {
for(int j = 0;j < B.size();j++) {
int cur_exp;
if(A[i].first == 0) cur_exp = B[j].first;
else if(B[i].first == 0) cur_exp = A[i].first;
else cur_exp = A[i].first + B[j].first;
double cur_cof = A[i].second * B[j].second;
if(res.find(cur_exp) != res.end()) cnt++;
res[cur_exp] += cur_cof;
if(res[cur_exp] == 0) {
cnt--;
res.erase(cur_exp);
}
}
}
cout << res.size() << " ";
for(map<int,double>::reverse_iterator it = res.rbegin(); it != res.rend(); it++) {
map<int,double>::reverse_iterator temp = it;
temp++;
if(temp != res.rend()) printf("%d %.1f ",it->first, it->second);
else printf("%d %.1f",it->first, it->second);
}
}
统计 多项式个数的时候 一定要注意两次判断。第一次判断这个项是否存在,第二次判断这个项的系数在经过各种操作之后是否会变成0。