這道題大意就是多項式乘法,按照正常思維逐項相乘就好了,要注意的結果的指數可能大於2000,結果數組開大點,這道題應該就沒什麼問題了。
#include<bits/stdc++.h>
using namespace std;
main()
{
double a[1005] = {0};
double b[1005] = {0};
int n;
scanf("%d",&n);
for(int i=0;i<n;i++)
{
int exp;
double co;
scanf("%d %lf",&exp,&co);
a[exp] = co;
}
scanf("%d",&n);
for(int i=0;i<n;i++)
{
int exp;
double co;
scanf("%d %lf",&exp,&co);
b[exp] = co;
}
double res[2005] = {0};
for(int i=0;i<1005;i++)
{
for(int j=0;j<1005;j++)
{
res[i+j] += b[j] * a[i];
}
}
int cnt=0;
for(int i=0;i<2005;i++)
if(res[i]!=0)
cnt++;
printf("%d",cnt);
for(int i=2000;i>0;i--)
if(res[i]!=0)
printf(" %d %.1lf",i,res[i]);
}