PAT 甲级 1002题

题目:1002 A+B for Polynomials

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 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

解题思路:

可以设置一个数组,下标为指数,存储的数据是系数,然后通过输入依次将值按照指数(下标)存入数组中,再遍历数组,输出值不为0的项。

注意:

①测试点1:当输出的时候需要将系数保留1位小数;

②测试点3/4/5/6:当A、B对应指数的系数相加正好为0的时候,其输出项数需要仔细的计算(即为当系数为0的时候,需要将该项去掉);

代码:

cpp 复制代码
#include<iostream>
using namespace std;
#define MAX 1002
int main()
{
	float arr[MAX] = {0.0f};    //对应指数作为数组下标,其存储的内容为该指数对应的系数
	int zhishu = 0;   //指数
	float xishu = 0;    //系数
	int K = 0;   //表示未知数的个数
	int K_Sum = 0;   //表示最终表达式的未知数个数

	//输入
	int j = 2;
	while(j--)   //输入两轮:A和B
	{
		cin>>K;
		K_Sum += K;
		while(K--)
		{
			cin>>zhishu>>xishu;
			for(int i=0;;i++)
			{
				if(i == zhishu)
				{
					if(arr[i] != 0.0f)   //如果A和B有相同的指数
					{
						K_Sum--;
						arr[i] += xishu;
						if(arr[i] == 0.0f)    //系数相加结果为0
						{
							K_Sum--;
						}
						break;
					}
					arr[i] += xishu;
					break;
				}
			}
		}
	}

	//输出
	cout<<K_Sum;
	for(int i=1001;i>=0;i--)
	{
		if(arr[i] != 0.0f)
		{
			cout<<" "<<i<<" ";
			printf("%.1f",arr[i]);
		}
	}
	cout<<endl;
	system("pause");
	return 0;
}
相关推荐
大二转专业19 分钟前
408算法题leetcode--第七天
考研·算法·leetcode
大母猴啃编程28 分钟前
数据结构---非线性--树
c语言·数据结构·学习·算法·青少年编程
码农探知35 分钟前
鹏哥C语言自定义笔记重点(67-)
c语言·数据结构
让学习成为一种生活方式41 分钟前
解析药用植物重楼甾体皂苷生物合成中的连续糖基化及其抗真菌作用-文献精读49
linux·数据库·算法·天然产物化学
super晓权1 小时前
SVM原理
算法·svm·machine learning
i嗑盐の小F1 小时前
【IEEE出版,高录用 | EI快检索】第二届人工智能与自动化控制国际学术会议(AIAC 2024,10月25-27)
图像处理·人工智能·深度学习·算法·自然语言处理·自动化
Python之栈1 小时前
Python if 语句优化技巧
python·算法
冰红茶兑滴水2 小时前
Linux 线程控制
linux·c++·算法
c语言鹌鹑蛋2 小时前
C++进阶 --- 多继承中的虚表问题
开发语言·c++
CYX_cheng2 小时前
算法基础-二分查找
算法