设计函数分别求两个一元多项式的乘积与和。
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
const int maxn = 5000;
int x[maxn], n1, n2, flag;
struct Data {
int x, y;
}data1[maxn], data2[maxn];
void output() {
flag = 0;
for (int i = 2000; i >= 0; i--) {
if (x[i]) {
if (flag++) printf(" ");
printf("%d %d", x[i], i);
}
}
if (flag == 0) printf("0 0");
printf("\n");
}
int main() {
scanf("%d", &n1); for (int i = 1; i <= n1; i++) scanf("%d %d", &data1[i].x, &data1[i].y);
scanf("%d", &n2); for (int i = 1; i <= n2; i++) scanf("%d %d", &data2[i].x, &data2[i].y);
memset(x, 0, sizeof(x));
for (int i = 1; i <= n1; i++) {
for (int j = 1; j <= n2; j++) {
x[data1[i].y + data2[j].y] += data1[i].x * data2[j].x;
}
}
output();
memset(x, 0, sizeof(x));
for (int i = 1; i <= n1; i++) x[data1[i].y] += data1[i].x;
for (int i = 1; i <= n2; i++) x[data2[i].y] += data2[i].x;
output();
return 0;
}