PAT甲级1002:A+B for Polynomials

在这里插入图片描述

思路一:用数组来对应指数和系数

#include<iostream>

using namespace std;


int main()
{
	int a=0, b=0; //a,b分别为多项式1,2的项数
	
	int x = 0; //x为指数
	float con = 0; //c为系数

	float c[1001] = { 0 }; //数组c用来对应指数和系数

	int sum = 0; //sum为求和后多项式的项数

	cin >> a; 
	for (int i = 0; i < a; i++)
	{
		cin >> x >> con;
		c[x] += con;
	}

	cin >> b;
	for (int i = 0; i < b; i++)
	{
		cin >> x >> con;
		c[x] += con;
	}

	for (int i = 0; i < 1001; i++)
	{
		if (c[i]!=0)
		{
			sum++;
		}
	}

	cout << sum;

	for (int i = 1000; i >=0 ; i--) //输出的时候需要按照次数的从高到底进行输出
	{
		if (c[i]!=0.0)
		{
			printf(" %d %.1f", i, c[i]);
		}
	}

	return 0;
}

思路二:用STL-map来对应指数和系数

#include<iostream>
#include<map>

using namespace std;


int main()
{
	int a, b=0; //a.b分别为两个多项式的项数

	int e = 0; //指数
	float c = 0; //系数

	map<int, float> mp; //用map类型来实现指数与系数的对应

	cin >> a;
	for (int i = 0; i < a; i++) {
		cin >> e >> c;
		mp[e] = c;
	}

	cin >> b;
	for (int i = 0; i < b; i++) {
		cin >> e >> c;
		mp[e] += c;
		if (mp[e] == 0)//如果系数相加后为0 ,则剔除这一项 
		{
			mp.erase(e);
		}
	}
	
	cout << mp.size();
	
	for (auto it = mp.rbegin(); it != mp.rend(); it++) 
	{
		printf(" %d %.1f", it->first, it->second);
	}
	return 0;
}

原创文章 85 获赞 86 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_43699840/article/details/105241794