1009 Product of Polynomials
题目大意
多项式相乘,有多项式自己的乘法规则
算法思想
- 三个数组,进行相乘
- 别忘了数组大小,原来的最大指数是1000,但是相乘后是2000
- 我用了一个变量记录已达到的最大指数,有可能会对时间有帮助
代码
#include<iostream>
#include<vector>
#include<iomanip>
using namespace std;
int main()
{
vector<float>a(1002);
vector<float>b(1002);
vector<float>c(2004);
int n, m;
int i, j;
int k = 0;
int max1 = -1;
int max2 = -1;
cin >> n;
for (i = 0; i < n; i++)
{
int q;
float p;
cin >> q >> p;
if (q > max1)//找到非零项较大值
{
max1 = q;
}
a[q] = p;
}
cin >> m;
for (j = 0; j < m; j++)
{
int q;
float p;
cin >> q >> p;
if (q > max1)//找到非零项较大值
{
max1 = q;
}
b[q] = p;
}
for (i = 0; i <= max1; i++)
{
for (j = 0; j <= max1; j++)
{
c[i + j] += a[i] * b[j];//处理相乘
if (c[i + j] != 0 && (i + j) > max2)//找到乘后的非零项较大值
{
max2 = i + j;
}
}
}
for (i = 0; i <= max2; i++)//记录非零项个数
{
if (c[i] != 0)
{
k++;
}
}
cout << k;
cout << setiosflags(ios::fixed) << setprecision(1);//保留一位小数
for (i = max2; i >= 0; i--)
{
if (c[i] != 0)
{
cout << " " << i << " " << c[i];
}
}
}