设计函数分别求两个一元多项式的乘积与和。
输入格式:
输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。
输出格式:
输出分2行,分别以指数递降方式输出乘积多项式以及和多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。零多项式应输出0 0。
输入样例:
4 3 4 -5 2 6 1 -2 0 3 5 20 -7 4 3 1 输出样例:
15 24 -25 22 30 21 -10 20 -21 8 35 6 -33 5 14 4 -15 3 18 2 -6 1 5 20 -4 4 -5 2 9 1 -2 0
AC代码:
#include <iostream>
#include <vector>
#define Max_Expon 1001
#define Max_Mul_Expon 1000001
using namespace std;
vector<int> Polynomial_Add(Max_Expon,0);
vector<int> Polynomial_Mul(Max_Mul_Expon,0);
//打印函数
void Print(vector<int> Polynomial)
{
int flag = 0;
for ( int i = Polynomial.size()-1 ; i >= 0 ; i-- ){
if ( Polynomial[i] != 0){
if ( flag == 0){
cout<<Polynomial[i]<<" "<<i;
flag = 1;
}else{
cout<<" "<<Polynomial[i]<<" "<<i;
}
}
}
if ( flag == 0){
cout<<"0 0";
}
}
//多项式加法
void Add(vector<int> Polynomial_1,vector<int> Polynomial_2){
for ( int i = 0 ; i < Polynomial_Add.size() ; i++){
Polynomial_Add[i] = Polynomial_1[i]+Polynomial_2[i];
}
}
//多项式乘法
void Mul(vector<int> Polynomial_1,vector<int> Polynomial_2){
for ( int i = 0 ; i < Polynomial_1.size() ; i++){
for ( int j = 0 ; j < Polynomial_2.size() ; j++){
Polynomial_Mul[i+j] += Polynomial_1[i]*Polynomial_2[j];
}
}
}
int main()
{
vector<int> Polynomial_1(Max_Expon,0);
vector<int> Polynomial_2(Max_Expon,0);
int coef=0; //系数
int expon=0; //指数
int num=0;
//初始化多项式
cin>>num;
for ( int i = 0 ; i < num ; i++){
cin>>coef>>expon;
Polynomial_1[expon] = coef;
}
cin>>num;
for ( int i = 0 ; i < num ; i++){
cin>>coef>>expon;
Polynomial_2[expon] = coef;
}
Mul(Polynomial_1,Polynomial_2);
Print(Polynomial_Mul);
cout<<endl;
Add(Polynomial_1,Polynomial_2);
Print(Polynomial_Add);
return 0;
}