题目链接:https://www.patest.cn/contests/pat-a-practise/1009
题目大意:两个多项式A和B求,A*B
解题思路:与1002. A+B for Polynomials (25)思路相同,通过模拟多项式的乘法,很容易求得。
代码如下:
#include <iostream>
#include <cstdio>
using namespace std;
int main(int argc, char const *argv[])
{
int k1,k2;
double p1[1001]={0};
double p2[1001]={0};
cin>>k1;
int e;
double c;
for(int i=0;i<k1;i++){
cin>>e>>c;
p1[e]=c;
}
cin>>k2;
for (int i=0;i<k2;i++)
{
cin>>e>>c;
p2[e]=c;
}
double res[2001]={0};
for(int i=0;i<=1000;i++){
for(int j=0;j<=1000;j++){
int tmpe=i+j;
res[tmpe]=res[tmpe]+p1[i]*p2[j];
}
}
int count=0;
for(int i=0;i<=2000;i++)
if(res[i]!=0)
count++;
cout<<count;
for(int i=2000;i>=0;i--){
if(res[i]!=0)
printf(" %d %.1f",i,res[i]);
}
return 0;
}