1009 Product of Polynomials (25 分)
This time, you are supposed to find A×B where A and B are two polynomials.
Input Specification:
Each input file contains one test case. Each case occupies 2 lines, and each line contains the information of a polynomial:
K N1 aN1 N2 aN2 ... NK aNK
where K is the number of nonzero terms in the polynomial, Ni and aNi (i=1,2,⋯,K) are the exponents and coefficients, respectively. It is given that 1≤K≤10, 0≤NK<⋯<N2<N1≤1000.
Output Specification:
For each test case you should output the product of A and B in one line, with the same format as the input. Notice that there must be NO extra space at the end of each line. Please be accurate up to 1 decimal place.
Sample Input:
2 1 2.4 0 3.2
2 2 1.5 1 0.5
Sample Output:
3 3 3.6 2 6.0 1 1.6
#include <bits/stdc++.h>
using namespace std;
double N[2005];
int main()
{
int n;
vector <int> v1,v3;
vector <double> v2,v4;
memset(N,0,sizeof(N));
cin>>n;
for(int i=0;i<n;i++)
{
int a;
double b;
cin>>a>>b;
v1.push_back(a);
v2.push_back(b);
}
cin>>n;
for(int i=0;i<n;i++)
{
int a;
double b;
cin>>a>>b;
v3.push_back(a);
v4.push_back(b);
}
for(int i=0;i<v1.size();i++)
{
for(int j=0;j<v3.size();j++)
{
N[v1[i]+v3[j]]+=v2[i]*v4[j];
}
}
int t=0;
for(int i=0;i<=v1[0]+v3[0];i++)
{
if(N[i]!=0)
t++;
}
cout<<t;
for(int i=v1[0]+v3[0];i>=0;i--)
{
if(N[i]!=0)
printf(" %d %.1f",i,N[i]);
}
return 0;
}
本文介绍了一种计算两个多项式相乘的算法,并通过C++代码实现了该算法。输入包含两个多项式的非零项系数及指数,输出为这两个多项式相乘后的结果。
1199

被折叠的 条评论
为什么被折叠?



