与1002的多项式相加类似。
其实我在做得时候还是发现,自己对数组的理解还是不都深刻。通过索引映射出索引位置的值。
在这一道题目里,次数对应的是所应项,系统就是索引所对应的值。
#include <iostream>
const int N=1010,M=2020;
//注意,最终的目标数组一定要注意,因为不注意就会出现越界情况
double a[N],b[N],c[M];
using namespace std;
int main(){
int k;
cin>>k;
while(k--){
int n;//次数
double v;//系数
cin>>n>>v;
a[n]=v;
}
cin>>k;
while(k--){
int n;//次数
double v;//系数
cin>>n>>v;
b[n]=v;
}
//多项式前面的系数去进行相乘
for(int i=0;i<N;i++){
for(int j=0;j<N;j++){
//去用一个循环
c[i+j]+=b[j]*a[i];//注意这个多项式的总结
}
}
int cnt=0;
for(int i=0;i<M;i++){
if(c[i])
cnt++;
}
cout<<cnt;
for(int i=M-1;i>=0;i--){
if(c[i])
printf(" %d %.1f",i,c[i]);
}
return 0;
}