Time Limit: 1s
Memory Limit: 128MB
p1, p2 다항식을 입력받아 p1+p2, p1-p2, p1*p2의 결과를 찾아라.
* Line 1 : n1 n2 (1~100범위의 p1과 p2의 coefficient의 개수)
* Line 2 ~ n1+1 : coefficient(-1,000~1,000 정수) exponent(-1,000~1,000 정수)
* Line n1+2 ~ n1+n2+1 : coefficient(-1,000~1,000 정수) exponent(-1,000~1,000 정수)
* exponent의 값은 내림차순으로 입력됨
sample output의 형식에 따라 p1+p2, p1-p2, p1*p2의 결과를 차례대로 출력
#include <stdio.h> #include <stdlib.h> #define MAX(a,b) (((a)>(b))?(a):(b)) #define MAX_DEGREE 101 #define POLY_ADD 0 #define POLY_SUB 1 #define POLY_MUL 2 typedef struct ListNode { int coef = 0; int expon = 0; struct ListNode *link = NULL; } ListNode; typedef struct ListHeader { int length = 0; ListNode *head = NULL; ListNode *tail = NULL; } ListHeader; YOUR_CODE int main() { ListHeader p1, p2, p3; int i, coef, exp, plen1, plen2; init(&p1); init(&p2); init(&p3); scanf("%d", &plen1); scanf("%d", &plen2); for (i = 0; i < plen1; i++) { scanf("%d %d", &coef, &exp); insert_node(&p1, coef, exp); } for (i = 0; i < plen2; i++) { scanf("%d %d", &coef, &exp); insert_node(&p2, coef, exp); } p3 = poly_arithmetic(p1, p2, POLY_ADD); poly_print(p3); p3 = poly_arithmetic(p1, p2, POLY_SUB); poly_print(p3); p3 = poly_arithmetic(p1, p2, POLY_MUL); poly_print(p3); return 0; }
4 3 1 100 -3 1 3 0 1 -100 1 2 2 1 1 -1
1 100 1 2 -1 1 3 0 1 -1 1 -100 1 100 -1 2 -5 1 3 0 -1 -1 1 -100 1 102 2 101 1 99 -3 3 -3 2 6 1 -3 0 3 -1 1 -98 2 -99 1 -101
c자료구조4장