PAT甲题题解-1009. Product of Polynomials (25)-多项式相乘

时间:2023-03-09 09:35:22
PAT甲题题解-1009. Product of Polynomials (25)-多项式相乘

多项式相乘

注意相乘结果的多项式要开两倍的大小!!!

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <string.h>
using namespace std;
//两个多项式相乘
const int maxn=+;
int k;
//原本定义个exp导致编译错误,没想到定义成exp1、exp2也会编译错误,估计引起函数名冲突了
double exps1[maxn];
double exps2[maxn];
int main()
{
memset(exps1,,sizeof(exps1));
memset(exps2,,sizeof(exps2));
int ee;
double val;
scanf("%d",&k);
for(int i=;i<k;i++){
scanf("%d %lf",&ee,&val);
exps1[ee]=val;
}
scanf("%d",&k);
for(int i=;i<k;i++){
scanf("%d %lf",&ee,&val);
exps2[ee]=val;
}
double ans[maxn*]; //注意这里要开2倍的大小
memset(ans,,sizeof(ans));
for(int i=;i<maxn;i++){
for(int j=;j<maxn;j++){
ans[i+j]+=exps1[i]*exps2[j];
}
}
int cnt=;
for(int i=;i<maxn*;i++){
if(ans[i]!=)
cnt++;
}
printf("%d",cnt);
for(int i=maxn*-;i>=;i--){
if(ans[i]!=){
printf(" %d %.1lf",i,ans[i]);
}
}
return ;
}