c/c++数据结构一元多项式的求和
来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/11/11 21:36:37
c/c++数据结构一元多项式的求和
一个一元多项式可以看作由若干个一元单项式按降幂排列成的线性表.请编写程序对输入的两个一元多项式求和,并输出求和的结果.
输入为两个一元多项式,每个一元多项式输入一行,按照降幂依次输入每个单项式的系数和指数,并以-1 -1作为结束.系数和指数均为整数,指数不小于0.
输出为求和结果多项式,按照降幂依次输出每个单项的系数和指数,每个数值后面用一个空格隔开,输出结果多项式后换行.系数为0的单项式不得输出——除非结果多项式就是0,则直接输出0.
样例输入
2 7 3 5 12 1 6 0 -1 -1
7 5 9 4 3 0 -1 -1
样例输出
2 7 10 5 9 4 12 1 9 0
一个一元多项式可以看作由若干个一元单项式按降幂排列成的线性表.请编写程序对输入的两个一元多项式求和,并输出求和的结果.
输入为两个一元多项式,每个一元多项式输入一行,按照降幂依次输入每个单项式的系数和指数,并以-1 -1作为结束.系数和指数均为整数,指数不小于0.
输出为求和结果多项式,按照降幂依次输出每个单项的系数和指数,每个数值后面用一个空格隔开,输出结果多项式后换行.系数为0的单项式不得输出——除非结果多项式就是0,则直接输出0.
样例输入
2 7 3 5 12 1 6 0 -1 -1
7 5 9 4 3 0 -1 -1
样例输出
2 7 10 5 9 4 12 1 9 0
#include <stdio.h>
#define N 1000
int ap[N];
int ae[N];
int bp[N];
int be[N];
int main() {
int i = 0, j = 0;
int alen, blen;
while (scanf("%d%d", &ap[i], &ae[i]), ap[i] >= 0 && ae[i] >= 0) {
i++;
}
while (scanf("%d%d", &bp[j], &be[j]), bp[j] >= 0 && be[j] >= 0) {
j++;
}
alen = i, blen = j;
i = j = 0;
while (i < alen && j < blen) {
if (ae[i] > be[j]) {
printf("%d %d ", ap[i], ae[i]);
i++;
} else if (ae[i] < be[j]) {
printf("%d %d ", bp[j], be[j]);
j++;
} else {
printf("%d %d ", bp[j]+ap[i], be[j]);
i++; j++;
}
}
while (i < alen) {
printf("%d %d ", ap[i], ae[i]);
i++;
}
while (j < blen) {
printf("%d %d ", bp[j], be[j]);
j++;
}
return 0;
}
大体上代码就是这样了,可能还需要根据题目微调一下N的大小,还有对0系数的处理
#define N 1000
int ap[N];
int ae[N];
int bp[N];
int be[N];
int main() {
int i = 0, j = 0;
int alen, blen;
while (scanf("%d%d", &ap[i], &ae[i]), ap[i] >= 0 && ae[i] >= 0) {
i++;
}
while (scanf("%d%d", &bp[j], &be[j]), bp[j] >= 0 && be[j] >= 0) {
j++;
}
alen = i, blen = j;
i = j = 0;
while (i < alen && j < blen) {
if (ae[i] > be[j]) {
printf("%d %d ", ap[i], ae[i]);
i++;
} else if (ae[i] < be[j]) {
printf("%d %d ", bp[j], be[j]);
j++;
} else {
printf("%d %d ", bp[j]+ap[i], be[j]);
i++; j++;
}
}
while (i < alen) {
printf("%d %d ", ap[i], ae[i]);
i++;
}
while (j < blen) {
printf("%d %d ", bp[j], be[j]);
j++;
}
return 0;
}
大体上代码就是这样了,可能还需要根据题目微调一下N的大小,还有对0系数的处理