求两个一元多项式的和。 输入格式: 输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。 输出格式: 输出分1行,分别以指数递降方式输出和多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。零多项式应输出0 0。
时间: 2023-03-27 11:02:06 浏览: 284
我可以回答这个问题。根据题目要求,我们可以先读入两个多项式的非零项个数和系数指数,然后将它们相加得到和多项式。最后按照指数递降的顺序输出和多项式的非零项系数和指数即可。具体实现可以参考下面的代码:
```c
#include <stdio.h>
#define MAXN 101
int main()
{
int n, m, a[MAXN], b[MAXN], c[MAXN];
scanf("%d", &n);
for (int i = ; i < n; i++)
scanf("%d%d", &a[i], &a[i + 1]);
scanf("%d", &m);
for (int i = ; i < m; i++)
scanf("%d%d", &b[i], &b[i + 1]);
int i = , j = , k = ;
while (i < n && j < m) {
if (a[i + 1] > b[j + 1]) {
c[k++] = a[i++];
c[k++] = a[i++];
} else if (a[i + 1] < b[j + 1]) {
c[k++] = b[j++];
c[k++] = b[j++];
} else {
c[k] = a[i] + b[j];
if (c[k] != ) {
c[k + 1] = a[i + 1];
k += 2;
}
i += 2;
j += 2;
}
}
while (i < n) {
c[k++] = a[i++];
c[k++] = a[i++];
}
while (j < m) {
c[k++] = b[j++];
c[k++] = b[j++];
}
if (k == ) {
printf(" \n");
} else {
printf("%d %d", c[], c[1]);
for (int i = 2; i < k; i += 2)
printf(" %d %d", c[i], c[i + 1]);
printf("\n");
}
return ;
}
```
阅读全文