用数组存多项式,数组下标为多项式次数,存的内容是多项式系数。
#include<cstdio>
double p1[1001] = { 0 }, p2[1001] = { 0 }, res[2501] = { 0 };
int main() {
int k1, k2, k3 = 0;
scanf("%d", &k1);
for (int i = 0;i < k1;i++) {
int exp;
double coe;
scanf("%d %lf", &exp, &coe);
p1[exp] = coe;
}
scanf("%d", &k2);
for (int i = 0;i < k2;i++) {
int exp;
double coe;
scanf("%d %lf", &exp, &coe);
p2[exp] = coe;
}
for (int i = 0;i < 1001;i++) {
if (p1[i] != 0) {
for (int j = 0;j < 1001;j++) {
if (p2[j] != 0) {
int exp = i + j;
res[exp] += p1[i] * p2[j];
}
}
}
}
for (int i = 0;i < 2500;i++) {
if (res[i] != 0)
k3++;
}
printf("%d", k3);
for (int i = 2500;i >= 0;i--) {
if (res[i] != 0) {
printf(" %d %.1f", i, res[i]);
}
}
}