您的位置:首页 > 其它

1002. A+B for Polynomials (25)

2018-02-05 12:55 405 查看

1002. A+B for Polynomials (25)

时间限制400 ms内存限制65536 kB代码长度限制16000 B判题程序Standard作者CHEN, YueThis time, you are supposed to find A+B where A and B are two polynomials.InputEach input file contains one test case. Each case occupies 2 lines, and each line contains the information of a polynomial: K N1 aN1 N2 aN2 ... NK aNK, whereK is the number of nonzero terms in the polynomial, Ni and aNi (i=1, 2, ..., K) are the exponents and coefficients, respectively. It is given that 1 <= K <= 10,0 <= NK < ... < N2 < N1 <=1000.OutputFor each test case you should output the sum of A and B in one line, with the same format as the input. Notice that there must be NO extra space at the end of each line. Please be accurate to 1 decimal place.Sample Input
2 1 2.4 0 3.2
2 2 1.5 1 0.5
Sample Output
3 2 1.5 1 2.9 0 3.2
分析:很简单的题,感觉写复杂了,主要在情况的分类上处理的不好
#include<stdio.h>#include<stdlib.h>typedef struct NODE *PtrN;struct NODE{int exp;float coe;PtrN Next;};int main(){int n1, n2;int i, j,k=0;PtrN P1, P2, tmp,tp,th,head;P1 = (PtrN)malloc(sizeof(struct NODE));P1->Next = NULL;tmp = P1;scanf( "%d", &n1);for (i = 0; i < n1; i++){tmp->Next = (PtrN)malloc(sizeof(struct NODE));tmp = tmp->Next;scanf( "%d %f", &tmp->exp, &tmp->coe);tmp->Next = NULL;}P2 = (PtrN)malloc(sizeof(struct NODE));P2->Next = NULL;tmp = P2;scanf( "%d", &n2);for (i = 0; i < n2; i++){tmp->Next = (PtrN)malloc(sizeof(struct NODE));tmp = tmp->Next;scanf( "%d %f", &tmp->exp, &tmp->coe);tmp->Next = NULL;}head = (PtrN)malloc(sizeof(struct NODE));head->Next = NULL;th = head;tmp = P1->Next;tp = P2->Next;while (tmp != NULL&&tp != NULL){if (tmp->exp == tp->exp){if (tmp->coe + tp->coe != 0){th->Next = (PtrN)malloc(sizeof(struct NODE));th = th->Next;th->Next = NULL;th->exp = tmp->exp;th->coe = tmp->coe + tp->coe;tmp = tmp->Next;tp = tp->Next;k++;9e15}else{tmp = tmp->Next;tp = tp->Next;}}else if (tmp->exp > tp->exp){if (tmp->coe != 0){th->Next = (PtrN)malloc(sizeof(struct NODE));th = th->Next;th->Next = NULL;th->exp = tmp->exp;th->coe = tmp->coe;tmp = tmp->Next;k++;}else tmp = tmp->Next;}else{if (tp->coe != 0){th->Next = (PtrN)malloc(sizeof(struct NODE));th = th->Next;th->Next = NULL;th->exp = tp->exp;th->coe = tp->coe;tp = tp->Next;k++;}else tp = tp->Next;}}while (tmp != NULL){th->Next = (PtrN)malloc(sizeof(struct NODE));th = th->Next;th->Next = NULL;th->exp = tmp->exp;th->coe = tmp->coe;tmp = tmp->Next;k++;}while (tp != NULL){th->Next = (PtrN)malloc(sizeof(struct NODE));th = th->Next;th->Next = NULL;th->exp = tp->exp;th->coe = tp->coe;tp = tp->Next;k++;}printf("%d", k);th = head->Next;while (th!= NULL){if(th->coe!=0)printf(" %d %.1f", th->exp, th->coe);th = th->Next;}return 0;}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: