
用结构体不用说了,现在只写了数组,以后把链表补上。
#include
typedef struct shu
{
int xi;
int zhi;
}SHU;
SHU zu1[100],zu2[100],chen[100],jia[100];
void shuru1(int n)
{
int i;
for(i=0;i<n;i++)
{
scanf("%d",&zu1[i].xi);
scanf("%d",&zu1[i].zhi);
}
}
void shuru2(int n)
{
int i;
for(i=0;i<n;i++)
{
scanf("%d",&zu2[i].xi);
scanf("%d",&zu2[i].zhi);
}
}
int chenji(int n,int m)
{
int i,j,k,s=0;
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
chen[s].xi = zu1[i].xi * zu2[j].xi;
chen[s].zhi = zu1[i].zhi + zu2[j].zhi;
s++;
}
}
for(i=0;i<s-1;i++)
{
for(j=i+1;j<s;j++)
{
if(chen[i].zhi == chen[j].zhi)
{
chen[i].xi += chen[j].xi;
for(k=j;k<s-1;k++)
{
chen[k] = chen[k+1];
}
s--;
}
}
}
return s;
}
int jiafa(int n,int m)
{
int i,j,k,f;
for(i=0;i<n;i++)
{
jia[i] = zu1[i];
}
for(i=0;i<m;i++)
{
jia[i+n] = zu2[i];
}
f = n+m;
for(i=0;i<f-1;i++)
{
for(j=i+1;j<f;j++)
{
if(jia[i].zhi == jia[j].zhi)
{
jia[i].xi += jia[j].xi;
for(k=j;k<f-1;k++)
{
jia[k] = jia[k+1];
}
f--;
}
}
}
return f;
}
void panduan(int s,int f)
{
int i,j;
for(i=0;i<s;i++)
{
if(chen[i].xi == 0)
chen[i].zhi = 0;
}
for(i=0;i<f;i++)
{
if(jia[i].xi == 0)
jia[i].zhi = 0;
}
}
void paixu(int s,int f)
{
SHU temp;
int i,j;
for(i=0;i<s-1;i++)
{
for(j=0;j<s-1-i;j++)
{
if(chen[j].zhi < chen[j+1].zhi)
{
temp = chen[j];
chen[j] = chen[j+1];
chen[j+1] = temp;
}
}
}
for(i=0;i<f-1;i++)
{
for(j=0;j<f-1-i;j++)
{
if(jia[j].zhi < jia[j+1].zhi)
{
temp = jia[j];
jia[j] = jia[j+1];
jia[j+1] = temp;
}
}
}
}
void prin(int s,int f)
{
int i,j,jec1=0,jec2=0;
for(i=0;i<s;i++)
{
if(chen[i].xi != 0)
jec1 = 1;
}
for(i=0;i<f;i++)
{
if(jia[i].xi != 0)
jec2 = 1;
}
if(jec1 == 0)
printf("0 0");
else
{
if(chen[0].xi != 0)
printf("%d %d",chen[0].xi,chen[0].zhi);
for(i=1;i<s;i++)
{
if(chen[i].xi != 0)
printf(" %d %d",chen[i].xi,chen[i].zhi);
}
}
printf("\n");
if(jec2 == 0)
printf("0 0");
else
{
if(jia[0].xi != 0)
printf("%d %d",jia[0].xi,jia[0].zhi);
for(i=1;i<f;i++)
{
if(jia[i].xi != 0)
printf(" %d %d",jia[i].xi,jia[i].zhi);
}
}
}
int main()
{
int n,m,i,s,f;
scanf("%d",&n);
shuru1(n);
getchar();
scanf("%d",&m);
shuru2(m);
s = chenji(n,m);
f = jiafa(n,m);
panduan(s,f);
paixu(s,f);
prin(s,f);
return 0;
}