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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值