1216: 数据结构练习题――多项式求和

来源:互联网 发布:清除数据的英文是什么 编辑:程序博客网 时间:2024/06/05 17:19

描述

给定两个多项式,求其和。

输入

输入数据包括多组,第一行给出了测试数据的组数。每一组数据的格式如下:

每组数据的第一行输入第一个多项式的非零系数个数m,下m行输入每个系数和对应的指数项,再下一行为第二个多项式的非零系数个数n,下n行输入每个系数和对应的指数项,每个多项式的指数项不重复,系数和指数项之间用空格分隔。

输出

对两个多项式进行相加,并输出非零项系数以及对应的指数项。系数项精确到小数点后2位,指数项为整数。指数项按照从小到大顺序输出。

多组数据之间用空行分隔。

样例输入

样例输出

提示

可以使用链表实现

题目来源

TOJ

方法一:数组

#include<stdio.h>int main() {int n;scanf("%d", &n);while (n--) {float xi[1000],t2;int zhi[1000],i,j,len1,len2,t1;int flag=0;scanf("%d", &len1);for (i = 0; i<len1; i++) {scanf("%f %d", &xi[i], &zhi[i]);}scanf("%d", &len2);for (i = len1; i<len1+len2; i++) {scanf("%f %d", &xi[i], &zhi[i]);}for (i = 0; i<len1+len2; i++) {for (j = 0; j<len1+len2- i - 1; j++) {if (zhi[j]>zhi[j + 1]) {t1 = zhi[j];    zhi[j] = zhi[j + 1];zhi[j + 1] = t1;t2 = xi[j];xi[j] = xi[j + 1];xi[j + 1] = t2;}}}for (i = 0; i<len1+len2-1; i++) {if(zhi[i]==zhi[i+1]){if(xi[i]+xi[i+1]!=0)printf("%.2f %d\n", xi[i]+xi[i+1], zhi[i]);        i++;if(i==len1+len2-1)flag=1;}else {printf("%.2f %d\n", xi[i], zhi[i]);}}if(!flag)printf("%.2f %d\n", xi[len1+len2-1], zhi[len1+len2-1]);if(n!=0)printf("\n");}return 0;}


0 0
原创粉丝点击