苏州OJ c001: 合并同类项

原创 2015年11月21日 15:11:53

内容:

【问题描述】
给出两个多项式y1和y2,请你合并同类项。
【输入】
输入数据共两行,每行代表一个多项式。每个多项式按如下形式给出:
a1 b1 a2 b2 … ai bi … an bn
其中a1~an均为整数,表示此多项式n项的系数,b1~bn均为整数,表示此多项式n项的指数。数字与数字之间用一个空格隔开,最后一个数字之后没有空格。
【输出】
输出数据仅一行,表示合并后的多项式,格式同输入形式,按指数递减排列。
【样例】
输入

3 7 5 6 -4 5 -3 2 -8 1 -2 0
9 12 -6 8 -5 7 -5 6 1 4 -8 3 6 2 7 1 3 0


输出


9 12 -6 8 -2 7 -4 5 1 4 -8 3 3 2 -1 1 1 0

/*
 * 这个题目有三个陷阱
 * 1.在同一行中可能出现指数相同的两个系数
 * 2.如果合并后系数为0则不输出
 * 3.如果合并后所有系数为0则输出0
 */
#include <iostream>
#include <map>
#include <functional>
#include <stdio.h>
using namespace std;

int main()
{
	// key-指数 value-系数 添加进两个map
	int xs, zs;
	map <int, int, greater<int> > iMap1, iMap2;
	while (cin >> xs >> zs) {
		char c = getchar();
		iMap1[zs] += xs;
		if (c == '\n') break;
	}
	while (cin >> xs >> zs) {
		iMap2[zs] += xs;
	}
	// 合并到iMap1
	map<int, int>::iterator iter = iMap2.begin();
	while (iter != iMap2.end()) {
		iMap1[iter->first] += iMap2[iter->first];
		++iter;
	}
	// 去除系数为0的
	iter = iMap1.begin();
	map<int, int>::iterator tmp;
	while (iter != iMap1.end()) {
		tmp = iter;
		++iter;
		if (tmp->second == 0) {
			iMap1.erase(tmp);
		}
	}
	// 输出
	iter = iMap1.begin();
	if (iter == iMap1.end())
		cout << "0";
	else {
		while (iter != iMap1.end()) {
			cout << iter->second << " " << iter->first;
			if (++iter != iMap1.end()) {
				cout << " ";
			}
		}
	}
	return 0;
}



版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

苏州OJ c004: 模拟队列

内容: 【问题描述】 请设计一个程序模拟队列,具备初始队列、入队、出队、输出队列数据的功能。 【输入】 输入由若干行组成,每行表示一种操作。每行由一个或两个整数组成,其中第一个整数代表...

苏州OJ c005: 二叉树遍历

【问题描述】   小明学完了树的基本知识,想做二叉树遍历的程序设计练习.根据二叉树的深度从数据文件中读入n个整数生成顺序存储的二叉树,做各种遍历的输出。小明发现输出的数据中有不少重复的,为此他先将重...

苏州OJ c002: 双向约瑟夫

内容: 【问题描述】 有n个人围坐在一个圆桌周围,把这n个人依次编号为1~n。从编号为1的人开始顺时针报数,报到m1的人出列;然后逆时针方向报数,报到m2的人出列。问最后谁出列? 【输入...

java链表实现一元多项式的合并同类项以及加法

上课的作业:利用java数据结构的知识表示一元多项式,以及实现一元多项式的加法运算以及合并同类项 链表节点类: package PloyItem; public class Lnode imp...

基础 c/c++ oj练习

  • 2015-08-30 09:46
  • 251KB
  • 下载

PAT-4C-L3-001-凑零钱(DFS剪枝)

L3-001. 凑零钱 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 ...

001.线性表顺序存储C实例

使用C语言实现线性表顺序存储的初始化、插入、删除、查找与合并。

C001-C语言-语法与用法摘录-(ques=2)

本文摘录一些平时遇到的、需要留意的、C语言方面的语法和用法。

C/C++基础-001

1.C++虚函数的工作原理  虚函数(virtual function)需要虚函数表(virtual table)才能实现。如果一个类有函数声明成虚拟的,就会生成一个虚函数表,存放这个类的虚函数地址。...

从ICLassFactory 为 CLSID的COM组建创建实例失败:c001f011

从ICLassFactory 为 CLSID的COM组建创建实例失败  错误如下图              首先针对这个问题,我注销服务器,然后再次进入服务器,就不...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)