题意:给你个N,表示有N项,然后给出每一项的X的幂以及系数,求两个一元多次多项式相乘的结果,输出项数以及按高次分别输出幂和系数
#include <stdio.h>
#include <memory.h>
#include <math.h>
#define MAX 2002
#define MAXN 101
#define EPS 0.05
int n,nk;
double nA[MAX],nB[MAX],nC[MAX];
double Dout[MAXN];
int Mout[MAXN];
void Init();
void Input();
void Mul();
void vout();
int main()
{
while(~scanf("%d",&n))
{
Init();
Input();
Mul();
vout();
}
return 0;
}
void Init()
{
memset(nA,0,sizeof(nA));
memset(nB,0,sizeof(nB));
memset(nC,0,sizeof(nC));
}
void Input()
{
int i,nmi;
double ndi;
for(i=0;i<n;i++)
{
scanf("%d%lf",&nmi,&ndi);
nA[nmi]=ndi;
}
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d%lf",&nmi,&ndi);
nB[nmi]=ndi;
}
}
void Mul()
{
int i,j;
for(i=0;i<MAX/2;i++)
{
for(j=0;j<MAX/2;j++)
{
nC[i+j]+=nA[i]*nB[j];
}
}
}
void vout()
{
int i;
nk=0;
for(i=MAX-1;i>=0;i--)
{
if(nC[i]>=EPS)
{
Mout[nk]=i;
Dout[nk]=nC[i];
nk++;
}
}
if(nk>0)
{
printf("%d",nk);
for(i=0;i<nk;i++)
{
printf(" %d %.1lf",Mout[i],Dout[i]);
}
printf("\n");
}
else
{
printf("0\n");
}
}