第一次尝试的时候忘记了1000*1000=1000,000
所以数组要开大一点…
别的就没什么了
#include <bits/stdc++.h>
using namespace std;
struct node
{
int exp;
double coeff;
};
node a[16];
node b[16];
double ans[1000010];
int main(void)
{
int ka,kb;
int e;
int sum=0;
double c;
memset(ans,0,sizeof(ans));
scanf("%d",&ka);
for(int i=0;i<ka;i++)
scanf("%d%lf",&a[i].exp,&a[i].coeff);
scanf("%d",&kb);
for(int i=0;i<kb;i++)
scanf("%d%lf",&b[i].exp,&b[i].coeff);
for(int i=0;i<ka;i++)
{
for(int j=0;j<kb;j++)
{
e=a[i].exp+b[j].exp;
c=a[i].coeff*b[j].coeff;
ans[e]+=c;
}
}
for(int i=0;i<100010;i++)
if(ans[i]!=0) sum++;
if(sum==0)
printf("0");
else
{
printf("%d ",sum);
for(int i=1000010;i>=0;i--)
{
if(ans[i]!=0)
{
printf("%d %.1lf",i,ans[i]);
sum--;
if(sum!=0) printf(" ");
}
}
}
}