这道题是大一的时候就做过的,当时刚学运算符重载。现在我用的是链表来做的,也算是复习一下快忘光的数据结构吧。

#include <iostream>
#include<iomanip>
using namespace std;//节点(多项式的项)
struct listNode{int exp;double coe;listNode *link;listNode(){}listNode(int e, double c){exp = e;coe = c;link = NULL;}
};class list{
public:listNode *first;listNode *last;   //方便后面直接用就没设为private啦list(){first = NULL;last = NULL;}//输入,初始化链表void init(int n){int e;double c;for (int i = 0; i<n; i++){cin >> e >> c;insert(e, c);}}//插入节点void insert(int e, double c){listNode *newNode = new listNode(e,c);if (first == NULL){newNode->link = first;first =  newNode;last = newNode;}else{last->link = newNode;last = newNode;}last->link = NULL;}//将系数为0的节点都剪掉void merge(){while (first!=NULL && first->coe == 0){first = first->link;}if (first != NULL){listNode *m = first->link;listNode *n = first;while (m != NULL){if (m->coe == 0){n->link = m->link;}else{n = n->link;}m = m->link;}}}//链表长度int Length(){listNode *p = first;int cnt = 0;while (p != NULL){p = p->link;cnt++;}return cnt;}
};
int main()
{int p, q;while (cin >> p){list a, b, c;a.init(p);cin >> q;b.init(q);//多项式加法listNode *ca = a.first;listNode *cb = b.first;while (ca != NULL&&cb != NULL){if (ca->exp > cb->exp){c.insert(ca->exp, ca->coe);ca = ca->link;}else if (ca->exp == cb->exp){c.insert(ca->exp, ca->coe + cb->coe);ca = ca->link;cb = cb->link;}else{c.insert(cb->exp, cb->coe);cb = cb->link;}}if (ca != NULL){while (ca != NULL){c.insert(ca->exp, ca->coe);ca = ca->link;}}else if (cb != NULL){while (cb != NULL){c.insert(cb->exp, cb->coe);cb = cb->link;}}c.merge();cout << c.Length();listNode *m = c.first;while (m != NULL){cout << " " << m->exp << " " << setiosflags(ios::fixed)<< setprecision(1) << m->coe;//输出是有精度要求的哦m = m->link;}cout << endl;}return 0;
}

浙大PAT甲级-1002相关推荐

  1. Pat甲级 1002 A+B for Polynomials

    Pat甲级 1002 A+B for Polynomials 思路 代码 题目网址 https://pintia.cn/problem-sets/994805342720868352/problems ...

  2. PAT甲级1002 A+B for Polynomials:[C++题解]字符串、多项式加法或高精度加法

    文章目录 题目分析 题目链接 题目分析 本题数据范围是1000 ,可以开一个数组 X [ ] ,X[i ]表示多项式中次幂是i的系数是多少. 因此,本题可以开两个数组,对应相加,然后输出非零项即可. ...

  3. 浙大PAT甲级1040

    浙大PAT甲级1040 原题 问题分析 原题 1040 Longest Symmetric String (25 分) Given a string, you are supposed to outp ...

  4. PAT甲级 1002

    PAT 甲级 1002 题目描述:多项式求和问题 输入两个多项式,输出和的多项式(多项式按指数递减排列) Sample Input: 2 1 2.4 0 3.2 2 2 1.5 1 0.5 Sampl ...

  5. 浙大PAT甲级1019. General Palindromic Number (20)

    1019. General Palindromic Number (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN ...

  6. PAT甲级 -- 1002 A+B for Polynomials (25 分)

    This time, you are supposed to find A+B where A and B are two polynomials. Input Specification: Each ...

  7. 浙大PAT甲级1027. Colors in Mars (20)

    1027. Colors in Mars (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue People ...

  8. 浙大PAT甲级1006

    1006. Sign In and Sign Out (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue ...

  9. 浙大 PAT 甲级1009

    1009. Product of Polynomials (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yu ...

  10. PAT 甲级 1002

    多项式加法 两处需要注意的: 相加后的多项式的系数如果是0,就不能输出 注意C++输出的格式 #include <bits/stdc++.h> using namespace std;st ...

最新文章

  1. wifi四次握手过程
  2. Linux 管道使用示例
  3. DGL教程【四】使用GNN进行链路预测
  4. [转]网页栅格系统研究(2):蛋糕的切法
  5. 手把手教你搭建Nginx-rtmp流媒体服务器+使用ffmpeg推流
  6. java增删改查代码_低代码开发平台
  7. C语言指针概念全面解析
  8. swipe.js文档及用法
  9. 字段不显示 继承_Springboot Shiro页面按钮显示、路径越权访问题
  10. SharePoint自动化系列——Set MMS field value using PowerShell.
  11. Windows下使用命令打开远程桌面
  12. 【安天】Xcode非官方版本恶意代码污染事件(XcodeGhost)的分析与综述
  13. 即时通讯(IM)开源项目OpenIM本周版本发布-v1.0.6
  14. Spectral Clustering(谱聚类和其他)
  15. pd.read_csv处理含中文的文件
  16. [程序员学英语]26个英文字母
  17. 动态规划法和贪心算法
  18. 写笔记插件_梁宝川:这11条anki插件的使用常识分享给你
  19. 浅析新媒体运营工作内容
  20. c语言按姓名查询出入信息,请问c语言如何实现按姓名查找?

热门文章

  1. 宝尚简讯-短期震荡在蓄势
  2. 实战演习(九)——用python分析科比生涯数据
  3. ros实现dhcp上网
  4. Day 177/200 React 颜色选择器
  5. 字节跳动笔试题-前端(互娱)
  6. 微信小程序:简单实现地图导航功能实现
  7. 我的海淀驾校考驾照之路
  8. MPB:林科院袁志林组-树木共生真菌菌株纯化及快速鉴定方法
  9. jxls对比_JXLS 2.4.0学习
  10. python批量查询高德地图经纬度(支持xlxs)