刷完pat甲级1009真题题库(9/155) 多项式相乘(Product of Polynomialst)
输入
每次输入两行,每行第一个数字表示多项式的项数,后面每两个数字代表一项,这一项中的第一个数字是指数,第二个数字是系数
输出
按照与输入相同的形式输出,即指数的顺序是从高到底,系数保留一位小数
思路
设置a,b,c三个double数组,c代表最终结果,双循环模拟A,B相乘
代码
#include<bits/stdc++.h>
using namespace std;
#define maxlen 1010
double a[maxlen]={0};
double b[maxlen]={0};
double c[2*maxlen]={0};
int main(){
int lena,lenb;
cin>>lena;
for(int i=0;i<lena;i++){
int t;
double m;
cin>>t>>m;
a[t]=m;
}
cin>>lenb;
for(int i=0;i<lenb;i++){
int t;
double m;
cin>>t>>m;
b[t]=m;
}
for(int i=0;i<maxlen;i++){
for(int j=0;j<maxlen;j++){
c[i+j]+=a[i]*b[j];
}
}
int cnt=0;
for(int i=0;i<2010;i++){
if(abs(c[i]) > 1e-15) cnt++;
}
cout<<cnt;
for(int i=2010;i>=0;i--)
if(abs(c[i]) > 1e-15)
printf(" %d %.1f",i,c[i]);
printf("\n");
return 0;
}