
解題思路:
定義三個數組double a[1001],b[1001],c[2001]分別用來表示多項式A,多項式B,和它們的成績,其中下標表示指數,元素值表明係數
注意點:數組c的長度要大於2001,a,b,c都要初始化爲零
#include <iostream>
#include<math.h>
using namespace std;
int main()
{
//數組下標表明指數,元素值表明係數
double a[1001] = { 0 }, b[1001] = { 0}, c[2001] = {0};
int n, m;
cin >> n;
for (int i = 0;i < n;i++) {
int ex;
double ef;
cin >> ex >> ef;
a[ex] = ef;
}
cin >> m;
for (int i = 0;i < m;i++) {
int ex;
double ef;
cin >> ex >> ef;
b[ex] = ef;
}
for (int i = 0;i < 1001;i++) {
//係數不爲零時
if (a[i] != 0) {
for (int j = 0;j < 1001;j++) {
if (b[j] != 0) {
double x = a[i] * b[j];//相乘後的係數
int k = i + j;//相乘後的指數
c[k] += x;
}
}
}
}
int num = 0;
for (int i = 0;i < 2001;i++) {
if (c[i]!=0)
num++;
}
cout << num ;
for (int i = 2000;i >=0;i--) {
if (c[i]!=0) {
printf(" %d %.1lf", i, c[i]);
}
}
return 0;
}