以数组下标作为指数开辟数组。
#include <stdlib.h>
#include <stdio.h>
/*
Created by HarvestWu on 2018/04/27.
*/
//以数组下标作为指数开辟数组
int main()
{
int c[1005] = { 0 };//求和
int t[1005] = { 0 };//存第一个原始值
int mul[2005] = { 0 };//求积
int n, m;//多项式一项数、多项式二项数
int t1, t2, flag = 0, flag1 = 0;//系数、指数、空格输出标志、零多项式标志
scanf("%d", &n);
for (int i = 0; i < n; i++)
{
scanf("%d", &t1);
scanf("%d", &t2);
t[t2] = t1;
c[t2] += t1;
}
scanf("%d", &m);
for (int i = 0; i < m; i++)
{
scanf("%d", &t1);
scanf("%d", &t2);
c[t2] += t1;
for (int i = 0; i <= 1000; i++)//多项式二的每一项乘以多项式一的每一项
if (t[i])
mul[i + t2] =mul[i+t2]+ t[i] * t1;
}
for (int i = 2000; i >= 0; i--)
{
if (mul[i])
{
if (!flag)
flag = 1;
else printf(" ");//非第一个输出,需输出前导空格
printf("%d %d", mul[i], i);
flag1 = 1;
}
}
if (!flag1)
printf("0 0");
printf("\n");
flag = flag1 = 0;
for (int i = 1000; i >=0; i--)
{
if (c[i])
{
if (!flag)
flag = 1;
else printf(" ");
printf("%d %d", c[i], i);
flag1 = 1;
}
}
if (!flag1)
printf("0 0");
return 0;
}