1. 原题链接
1009. Product of Polynomials (25)
2. 理解题目
给出两个多项式,输出乘积的结果;(给出的项按照exp递减的顺序,输出也要按照这个要求);
3. 解题思路
[思路]
先用结构体数组来存储每一项的exp和coe,然后进行两层遍历,按照多项式乘积的规则,将结果的exp存储在double ans[]数组下标,
coe结果存储在数组内容中;然后按照exp从大到小输出coe不为0的项;
4. AC代码
//两层遍历,然后结果存在ans[exp]=coe中
#include<cstdio>
const int maxn=2010;
int a,b;
double ans[maxn]={0};
struct Node{
int exp;
double coe;
}in_a[maxn],in_b[maxn];
int main(){
scanf("%d",&a);
for(int i=0;i<a;i++){
scanf("%d%lf",&in_a[i].exp,&in_a[i].coe);
}
scanf("%d",&b);
for(int i=0;i<b;i++){
scanf("%d%lf",&in_b[i].exp,&in_b[i].coe);
}
//product
for(int i=0;i<a;i++){
for(int j=0;j<b;j++){
ans[in_a[i].exp+in_b[j].exp]+=in_a[i].coe*in_b[j].coe;
}
}
//计算cnt和结果
int cnt=0;
for(int i=0;i<maxn;i++){
if(ans[i]) cnt++;
}
printf("%d",cnt);
for(int i=maxn-1;i>=0;i--){
if(ans[i]) printf(" %d %.1f",i,ans[i]);
}
}