【数据结构OJ】DS线性表—多项式相加

embedded/2024/9/26 3:20:59/

题目描述

对于一元多项式p(x)=p0+p1x+p2x2++pnxn,每个项都有系数和指数两部分,例如p2x2的系数为p2,指数为2。

编程实现两个多项式的相加。

例如5+x+2x2+3x3-5-x+6x2+4x4,两者相加结果:8x2+3x3+4x4

其中系数5和-5都是x的0次方的系数,相加后为0,所以不显示。x的1次方同理不显示。

要求用单链表实现。

输入

第1行:输入t表示有t组测试数据

第2行:输入n表示有第1组的第1个多项式包含n个项

第3行:输入第一项的系数和指数,以此类推输入n行

接着输入m表示第1组的第2个多项式包含m项

同理输入第2个多项式的m个项的系数和指数

参考上面输入第2组数据,以此类推输入t组

假设所有数据都是整数

输出

对于每1组数据,先用两行输出两个原来的多项式,再用一行输出运算结果,不必考虑结果全为0的情况

输出格式参考样本数据,格式要求包括:

1.如果指数或系数是负数,用小括号括起来。

2.如果系数为0,则该项不用输出。

3.如果指数不为0,则用符号^表示,例如x的3次方,表示为x^3。

4.多项式的每个项之间用符号+连接,每个+两边加1个空格隔开。

IO模式

本题IO模式为标准输入/输出(Standard IO),你需要从标准输入流中读入数据,并将答案输出至标准输出流中。

输入样例:

2
4
5 0
1 1
2 2
3 3
4
-5 0
-1 1
6 2
4 4
3
-3 0
-5 1
2 2
4
9 -1
2 0
3 1
-2 2
输出样例

5 + 1x^1 + 2x^2 + 3x^3
(-5) + (-1)x^1 + 6x^2 + 4x^4
8x^2 + 3x^3 + 4x^4
(-3) + (-5)x^1 + 2x^2
9x^(-1) + 2 + 3x^1 + (-2)x^2
9x^(-1) + (-1) + (-2)x^1

AC代码

#include <iostream>
using namespace std;class node {public:int data;  int cs;   node *next = nullptr;
};void disp(node *head) {node *p = head->next;bool first = true;while (p) {if (p->data != 0) {if (!first) {cout << " + ";} else {first = false;}if (p->data < 0) {cout << "(" << p->data << ")";} else {cout << p->data;}if (p->cs != 0) {cout << "x^";if (p->cs < 0) {cout << "(" << p->cs << ")";} else {cout << p->cs;}}}p = p->next;}cout << endl;
}void create(int data, int cs, node *head) {node *p = head;while (p->next) {p = p->next;}node *temp = new node;temp->data = data;temp->cs = cs;temp->next = nullptr;p->next = temp;
}
node *LL_merge(node *La, node *Lb) {node *Lc = new node;  node *p = Lc;        node *pa = La->next; node *pb = Lb->next; while (pa != nullptr && pb != nullptr) {if (pa->cs == pb->cs) {int sum = pa->data + pb->data;if (sum != 0) {p->next = new node;p = p->next;p->cs = pa->cs;p->data = sum;p->next = nullptr;}pa = pa->next;pb = pb->next;} else if (pa->cs < pb->cs) {p->next = new node;p = p->next;p->cs = pa->cs;p->data = pa->data;p->next = nullptr;pa = pa->next;} else {p->next = new node;p = p->next;p->cs = pb->cs;p->data = pb->data;p->next = nullptr;pb = pb->next;}}while (pa != nullptr) {p->next = new node;p = p->next;p->cs = pa->cs;p->data = pa->data;p->next = nullptr;pa = pa->next;}while (pb != nullptr) {p->next = new node;p = p->next;p->cs = pb->cs;p->data = pb->data;p->next = nullptr;pb = pb->next;}return Lc;
}int main() {int t, n, d, cs;cin >> t;  while (t--) {cin >> n;node *La = new node;for (int i = 0; i < n; i++) {cin >> d >> cs;create(d, cs, La);}cin >> n;node *Lb = new node;for (int i = 0; i < n; i++) {cin >> d >> cs;create(d, cs, Lb);}disp(La);disp(Lb);node *Lc = LL_merge(La, Lb);disp(Lc);}return 0;
}


http://www.ppmy.cn/embedded/112135.html

相关文章

模拟面试后端开发复盘

目录 一&#xff1a;项目的系统开发和设计思路 二&#xff1a;Java的反射是什么&#xff1f;在项目中有用到吗&#xff1f; 三&#xff1a;多态的实现原理 四&#xff1a;项目中的redis是用在了哪里 五&#xff1a;Session和Cookie的区别&#xff0c;Cookie可以被修改吗&a…

使用 Vue 的事件总线:为了实现点击当前按钮关注或取消关注时,另一个页面的 Vue 组件中的表格数据自动刷新

创建事件总线 在 src 目录下创建一个新的文件&#xff0c;例如 eventBus.js&#xff0c;并添加以下代码&#xff1a; import Vue from vue; export const EventBus new Vue(); 在当前组件中触发事件 在第一个组件的 Upby3 方法中&#xff0c;调用事件总线来触发事件&#xff1…

ubuntu中QT+opencv在QLable上显示摄像头

ubuntu中QTopencv在QLable上显示摄像头 饭前的一篇文章吧&#xff0c;写完吃饭走 图像在机器视觉中的重要性是不可忽视的。机器视觉是指计算机利用图像处理技术进行图像识别、分析和理解的科学与技术领域。图像是机器视觉的输入数据&#xff0c;通过分析和处理图像&#xff0…

SQL注入(数据库)简介

SQL注入简介 SQL注入的历史地位&#xff1a;SQL注入的原理&#xff1a;SQL的防范措施&#xff1a;总结: SQL注入的历史地位&#xff1a; SQL注入技术是WEB安全史上的一个转折点&#xff0c;在SQL技术兴起之前&#xff0c;黑客的主要攻击对象是系统软件&#xff0c;在黑客与安全…

【运维资料】网络监控运维管理解决方案(PPT原件完整版)

构建一体化运维监控平台的核心策略涵盖了几个关键维度&#xff0c;旨在打造一个高效、灵活且稳定的系统管理体系。首要任务是确立清晰的监控目标&#xff0c;这要求深入理解业务需求&#xff0c;确保监控范围覆盖关键性能指标、服务状态及潜在风险点。随后&#xff0c;整合现有…

Golang | Leetcode Golang题解之第395题至少有K个重复字符的最长子串

题目&#xff1a; 题解&#xff1a; func longestSubstring(s string, k int) (ans int) {for t : 1; t < 26; t {cnt : [26]int{}total : 0lessK : 0l : 0for r, ch : range s {ch - aif cnt[ch] 0 {totallessK}cnt[ch]if cnt[ch] k {lessK--}for total > t {ch : s[…

【Lua学习】Lua最最基础的

Lua是什么&#xff1f; Lua是一种强大、高效、轻量级、可嵌入的脚本语言。它支持过程式编程、面向对象编程、函数式编程、数据驱动编程和数据描述。 Lua将简单的过程式语法与基于关联数组和可扩展语义的强大数据描述构造相结合。Lua是动态类型的&#xff0c;通过基于寄存器的虚…

使用 PyCharm 新建 Python 项目详解

使用 PyCharm 新建 Python 项目详解 文章目录 使用 PyCharm 新建 Python 项目详解一 新建 Python 项目二 配置环境1 项目存放目录2 Python Interpreter 选择3 创建隔离环境4 选择你的 Python 版本5 选择 Conda executable 三 New Window 打开项目四 目录结构五 程序编写运行六 …