PAT1002.A+B for Polynomials

<span style="font-family: Arial, Helvetica, sans-serif;">#include <stdio.h></span>
#include <stdlib.h>

int main(int argc, char *argv[]) 
{
	typedef struct
	{
		int  ni;
		double  ani;
	}poly;
	
	poly   a[11],b[11],c[23];
	int    k1,k2;
	int    i,j,p;
	int    m;
	double n;
	
	while( scanf("%d", &k1) != EOF )
	{
		for( i = 0 ; i < k1 ; i++ )
		{
			scanf("%d %lf", &a[i].ni, &a[i].ani);
		}
		scanf("%d", &k2);
		for( j = 0 ; j < k2 ; j++ )
		{
			scanf("%d %lf", &b[j].ni, &b[j].ani);
		}

		p = 0;		
		for( i = 0, j = 0 ; i < k1 && j < k2 ; )
		{
			if( a[i].ni == b[j].ni )
			{
				m = a[i].ni;
				n = a[i].ani + b[j].ani;
				if( n != 0 )
				{
					c[p].ni = m;
					c[p].ani = n;
					p++;
					i++;
					j++;
				}
				else
				{
					i++;
					j++;
				}
			}
			else if( a[i].ni > b[j].ni )
			{
				c[p].ni = a[i].ni;
				c[p].ani = a[i].ani;
				p++;
				i++;
			}
			else
			{
				c[p].ni = b[j].ni;
				c[p].ani = b[j].ani;
				p++;
				j++;
			}
		}
		
		if(i < k1)
		{
			for(; i < k1 ; i++)  
			{
				c[p].ni = a[i].ni;
				c[p].ani = a[i].ani;
				p++;
			}
		}
		if(j < k2 )
		{
			for(; j < k2 ; j++)
			{
				c[p].ni = b[j].ni;
				c[p].ani = b[j].ani;
				p++;
			}
		}
		
		printf("%d", p);
		for(i = 0 ; i < p ; i++)
		{
			printf(" %d %.1lf", c[i].ni, c[i].ani);
		}
	} 
	
	return 0;
}
讨论三种情况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值