#includeusing namespace std; #define MAXSIZE 1000 int main() { int a[MAXSIZE][2]; int b[MAXSIZE][2]; int num1,num2; cin >> num1 ; for (int i = 0; i < num1; i++) { cin >> a[i][0] >> a[i][1]; } cin >> num2; for (int i = 0; i < num2; i++) { cin >> b[i][0] >> b[i][1]; } if (num1 == 0 && num2 == 0) { cout << "0 0"; return 0; } else if (num1 == 0) { for (int i = 0; i < num2; i++) { if (i == num2 - 1) cout << b[i][0] << " " << b[i][1]; else cout << b[i][0] << " " << b[i][1] << " "; } return 0; } else if (num2 == 0) { for (int i = 0; i < num1; i++) { if (i == num1 - 1) cout << a[i][0] << " " << a[i][1]; else cout << a[i][0] << " " << a[i][1] << " "; } return 0; } int c[MAXSIZE][2]; //两个多项式求一介导再相加,存到c中 int size = 0; int i = 0,j = 0; while (i < num1 && j < num2) { if ( a[i][1] - 1 > b[j][1] - 1) { c[size][0] = a[i][0] * a[i][1]; c[size][1] = a[i][1] - 1; size++; i++; } else if ( a[i][1] - 1 < b[j][1] - 1) { c[size][0] = b[j][0] * b[j][1]; c[size][1] = b[j][1] - 1; size++; j++; } else { c[size][0] = b[j][0] * b[j][1]+ a[i][0] * a[i][1]; c[size][1] = b[j][1] - 1; size++; j++; i++; } } if (a[i][1]) { c[size][0] = a[i][0] * a[i][1]; c[size][1] = a[i][1] - 1; size++; i++; } else if (b[j][1]) { c[size][0] = b[j][0] * b[j][1]; c[size][1] = b[j][1] - 1; size++; j++; } size--; for (int i = 0; i < size; i++) { if (i == size - 1) cout << c[i][0] << " " << c[i][1]; else cout << c[i][0] << " " << c[i][1] << " "; } return 0; }



