1009. Product of Polynomials (25)
来源:互联网 发布:中国铁塔 网络强国 编辑:程序博客网 时间:2024/04/27 00:02
1009. Product of Polynomials (25)
This time, you are supposed to find A*B where A and B are two polynomials.
Input Specification:
Each 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, where K 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.
Output Specification:
For each test case you should output the product 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 up to 1 decimal place.
Sample Input2 1 2.4 0 3.22 2 1.5 1 0.5Sample Output
3 3 3.6 2 6.0 1 1.6
在多项式加法的基础上增加了MulP函数。
#include <stdio.h> #include <stdlib.h> typedef struct node { int exp; double coef; struct node *next; }NODE; NODE* GetP(void) { int k,i,expp; double coeff; NODE *head; NODE *p,*t; head = (NODE*)malloc(sizeof(NODE)); head ->next = NULL; p = head; scanf("%d",&k); for(i=0;i<k;i++) { scanf("%d %lf",&expp,&coeff); t = (NODE*)malloc(sizeof(NODE)); t->exp = expp; t->coef = coeff; t->next = NULL; p->next = t; p = t; } return head; } NODE* AddP(NODE *Pa,NODE *Pb) { NODE *head; NODE *p,*t; NODE *PA = Pa,*PB =Pb; head = (NODE*)malloc(sizeof(NODE)); head->next = NULL; p = head; PA = PA->next; PB = PB->next; while(PA!=NULL && PB!= NULL) { if(PA->exp == PB->exp) { if(PA->coef + PB->coef!=0) { t = (NODE*)malloc(sizeof(NODE)); t->exp = PA->exp; t->coef = PA->coef + PB->coef; t->next = NULL; p->next = t; p = t; } PA = PA->next; PB = PB->next; } else if(PA->exp > PB->exp) { t = (NODE*)malloc(sizeof(NODE)); t->exp = PA->exp; t->coef = PA->coef; t->next = NULL; PA = PA->next; p->next = t; p = t; } else { t = (NODE*)malloc(sizeof(NODE)); t->exp = PB->exp; t->coef = PB->coef; t->next = NULL; PB = PB->next; p->next = t; p = t; } } while(PA != NULL) { t = (NODE*)malloc(sizeof(NODE)); t->exp = PA->exp; t->coef = PA->coef; t->next = NULL; PA = PA->next; p->next = t; p = t; } while(PB != NULL) { t = (NODE*)malloc(sizeof(NODE)); t->exp = PB->exp; t->coef = PB->coef; t->next = NULL; PB = PB->next; p->next = t; p = t; } return head; } NODE* MulP(NODE *PA,NODE *PB){NODE *RetP;NODE *head,*p,*t,*m;RetP = (NODE*)malloc(sizeof(NODE));RetP->next = NULL;head = (NODE*)malloc(sizeof(NODE));head->next = NULL;p = head;PA = PA->next;PB = PB->next;while(PA != NULL){m = PB;while(m != NULL){t = (NODE*)malloc(sizeof(NODE));t->next = NULL;t->exp = PA->exp + m->exp;t->coef = PA->coef * m->coef;p->next = t;p = t;m = m->next;}RetP = AddP(head,RetP);PA = PA->next;head = (NODE*)malloc(sizeof(NODE));head->next = NULL;p = head;}return RetP;}int main() { NODE *PA,*PB,*PC,*p; int k; PA = GetP(); PB = GetP(); PC = MulP(PA,PB); if(PC->next == NULL) { printf("0"); return 0; } PC = PC->next; for(k=0,p=PC;p!=NULL;k++,p=p->next); printf("%d ",k); while(PC->next!=NULL) { printf("%d %.1lf ",PC->exp,PC->coef); PC = PC->next; } printf("%d %.1lf",PC->exp,PC->coef); return 0; }
- 1009. Product of Polynomials (25)
- 1009. Product of Polynomials (25)
- 1009. Product of Polynomials (25)
- 1009. Product of Polynomials (25)
- 1009. Product of Polynomials (25)
- 1009. Product of Polynomials (25)
- 1009. Product of Polynomials (25)
- 1009. Product of Polynomials (25)
- 1009. Product of Polynomials (25)
- 1009. Product of Polynomials (25)
- 1009. Product of Polynomials (25)
- 1009. Product of Polynomials (25)
- 1009. Product of Polynomials (25)
- 1009. Product of Polynomials (25)
- 1009. Product of Polynomials (25)
- 1009. Product of Polynomials (25)
- 1009. Product of Polynomials (25)
- 1009. Product of Polynomials (25)
- Linux系统命令
- 最小调整有序
- netty 权威指南勘误
- 常用date和string的相互转化与格式设置
- 博弈论
- 1009. Product of Polynomials (25)
- JavaScript面向对象之Prototypes和继承
- How To Install Apache Tomcat 7 on CentOS 7 via Yum
- "Java:comp/env/"讲解与JNDI
- mysql → INSERT ... ON DUPLICATE KEY UPDATE
- Android代码混淆报错
- Error:(2, 0) Plugin with id 'com.github.dcendents.android-maven' not found
- 使用数组实现队列(C语言)
- Article - Physically Based Rendering