-
a[N]存第一个多项式的指数和系数,b[N]存第二个多项式的指数和系数
c[2*N]存a与b相乘的结果 -
a[ ]与b[ ]每一项进行相乘,系数相乘,指数相加
那么c[i + j] += a[i] * b[j]
-
将c[ ]中存的指数和系数从大到小输出
#include <iostream>
using namespace std;
const int N = 1010;
double a[N], b[N], c[2*N];//a[指数] = 系数(浮点数)
int main()
{
int k;
cin >> k;
for(int i = 0; i < k; i++)
{
int x;
double y;
cin >> x >> y;
a[x] += y;
}
cin >> k;
for(int i = 0; i < k; i++)
{
int x;
double y;
cin >> x >> y;
b[x] += y;
}
//枚举所有指数
for(int i = 0; i < N; i++)
for(int j = 0; j < N; j++)
c[i + j] += a[i] * b[j];
//输出多项式数量
int cnt = 0;
for(int i = 0; i < 2000; i++)
if(c[i])
cnt++;
cout << cnt;
//输出多项式中的指数和系数
for(int i = 2000; i >= 0; i--)
if(c[i])
printf(" %d %.1lf", i, c[i]);
return 0;
}