沒什麼難點,感覺最後控制格式那裏有點麻煩,可能是我寫的不好
#include<iostream>
#include<stdio.h>
#include<string.h>
#define MAXN 1002
using namespace std;
void add(int a[],int b[],int c[]){
for(int i = 0;i < MAXN;i++){
c[i] = b[i] + a[i];
}
}
void multiply(int a[],int b[],int c[]){
for(int i=0;i<MAXN;i++){
if(a[i] != 0){
for(int j=0;j < MAXN;j++){
if(b[j] != 0)c[i+j] += a[i]*b[j];
}
}
}
}
int main(){
int n,m,i,j,x,y;
int a[MAXN],b[MAXN],c[MAXN*2],d[MAXN];
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
memset(c,0,sizeof(c));
memset(d,0,sizeof(d));
cin >> n;
while(n--){
cin >> y >> x;
a[x] = y;
}
cin >> m;
while(m--){
cin >> y >> x;
b[x] = y;
}
add(a,b,d);
multiply(a,b,c);
//cout << a[4];
//cout << b[4];
//cout << d[4];
int min,sum = 0;
for(int i = 0;i < MAXN*2;i++){
if(c[i] !=0){min = i;break;}
}
for(int i = MAXN*2-1;i >= 0;i--){
if(c[i] != 0){
sum = 1;
cout << c[i] << " " << i ;
if(i != min)cout << " ";
}
}
if(sum ==0)cout << 0 << " " << 0 ;
cout << endl;
for(int i = 0;i < MAXN;i++){
if(d[i] != 0){
min = i;
break;
}
}
sum = 0;
for(int i=MAXN-1;i >= 0;i--){
if(d[i] != 0){
sum = 1;
cout << d[i] << " " << i;
if(i != min)cout << " ";
}
}
if(sum == 0)cout << 0 << " " << 0;
}