1002. A+B for Polynomials (25)

原创 2016年08月29日 14:07:32

1002. A+B for Polynomials (25)

 

时间限制
400 ms
内存限制
65536 kB
代码长度限制
16000 B
判题程序
Standard
作者
CHEN, Yue

This time, you are supposed to find A+B where A and B are two polynomials.

Input

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

For 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

 

因为是PAT的代码所以干脆最后没有free了,需要注意。

#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;
	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;
}

int main()
{
	NODE *PA,*PB,*PC,*p;
	int k;
	PA = GetP();
	PB = GetP();
	PC = AddP(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;
}


 

 

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

PAT甲级 1002. A+B for Polynomials (25) 题目翻译与答案

1002.多项式A与B的和 这次,假设A和B是两个多项式,求A与B的和多项式。
  • qq278672818
  • qq278672818
  • 2017年01月15日 17:50
  • 1127

PAT Advanced Level 1002. A+B for Polynomials (25)(Java)

1002. A+B for Polynomials (25) Java代码: import java.util.Iterator; import java.util.Scanner; im...
  • u010388829
  • u010388829
  • 2014年09月13日 23:03
  • 1089

PAT Advanced 1002. A+B for Polynomials (25) (C语言实现)

题目 This time, you are supposed to find A+B where A and B are two polynomials. Input Each input file...
  • Oliver__Lew
  • Oliver__Lew
  • 2017年05月18日 23:47
  • 268

1002. A+B for Polynomials (25)

This time, you are supposed to find A+B where A and B are two polynomials. Input Each input fi...
  • zjujqq
  • zjujqq
  • 2013年09月04日 15:40
  • 502

PAT1002:1002. A+B for Polynomials 解题报告

1002. A+B for Polynomials (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16...
  • hongbudao
  • hongbudao
  • 2017年08月15日 21:48
  • 132

PAT (Advanced Level) Practise 1002 A+B for Polynomials (25)

1002. A+B for Polynomials (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16...
  • jtjy568805874
  • jtjy568805874
  • 2016年03月02日 19:32
  • 436

PAT:1002. A+B for Polynomials (25)

import java.util.Scanner; import java.util.Vector; import java.util.Iterator; class  Polynomials_1...
  • songjianyue12345
  • songjianyue12345
  • 2016年10月02日 21:12
  • 130

pat 1002. A+B for Polynomials (25)

题目比较简单,找相同的次数
  • XUNathan
  • XUNathan
  • 2014年09月03日 20:07
  • 386

PAT-A 1002. A+B for Polynomials (25)

PAT-A 1002. A+B for Polynomials (25)
  • Daniel960601
  • Daniel960601
  • 2017年02月15日 21:15
  • 370

PAT 1002. A+B for Polynomials (25)

PAT 1002. A+B for Polynomials (25) https://www.patest.cn/contests/pat-a-practise/1002时间限制 400 ms ...
  • qq_33354943
  • qq_33354943
  • 2017年06月15日 00:44
  • 52
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:1002. A+B for Polynomials (25)
举报原因:
原因补充:

(最多只允许输入30个字)