题意:多项式乘积
思路:跟笔算一致
代码:
#include<cstdio>
#include<cstring>
int n,m,a1[15],a2[15];
double b1[15],b2[15],ans[2005];
bool mark[2005];
int main()
{
int i;
memset(mark,false,sizeof(mark));
for(i=0;i<=1000;i++)
ans[i]=0;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d%lf",&a1[i],&b1[i]);
}
scanf("%d",&m);
for(i=0;i<m;i++)
{
scanf("%d%lf",&a2[i],&b2[i]);
}
for(i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
ans[a1[i]+a2[j]]+=b1[i]*b2[j];
mark[a1[i]+a2[j]]=1;
}
}
int sum=0;
for(i=0;i<=2000;i++)
{
if(ans[i]!=0) sum++;
}
printf("%d",sum);
for(i=2000;i>=0;i--)
{
if(ans[i]!=0) printf(" %d %.1lf",i,ans[i]);
}
return 0;
}