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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章