高精度算法总结

高精度加法

题目链接:

https://www.acwing.com/activity/content/problem/content/825/

代码模版:

#include <iostream>
#include <vector>using namespace std;// C = A + B
vector<int> add(vector<int> &A, vector<int> &B)
{vector<int> C;int t = 0;  // 进位for (int i = 0; i < A.size() || i < B.size(); i++){if (i < A.size()) t += A[i];if (i < B.size()) t += B[i];C.push_back(t % 10);t /= 10;}if (t) C.push_back(1);return C;
}int main()
{string a, b;vector<int> A, B;cin >> a >> b;  // a = "123456"for (int i = a.size() - 1; i >= 0; i--) A.push_back(a[i] - '0');  // A = [6, 5, 4, 3, 2, 1]for (int i = b.size() - 1; i >= 0; i--) B.push_back(b[i] - '0');auto C = add(A, B);for (int i = C.size() - 1; i >= 0; i--) printf("%d", C[i]);return 0;
}

高精度减法

题目链接:

https://www.acwing.com/activity/content/problem/content/826/

代码模版:

#include <iostream>
#include <vector>using namespace std;// 判断是否有 A >= B
bool cmp(vector<int> &A, vector<int> &B)
{if (A.size() != B.size()) return A.size() > B.size();for (int i = A.size() - 1; i >= 0; i--)if (A[i] != B[i])return A[i] > B[i];return true;
}// C = A - B
vector<int> sub(vector<int> &A, vector<int> &B)
{vector<int> C;for (int i = 0, t = 0; i < A.size(); i++){t = A[i] - t;if (i < B.size()) t -= B[i];C.push_back((t + 10) % 10);if (t < 0) t = 1;else t = 0;}while (C.size() > 1 && C.back() == 0) C.pop_back();  // 去掉前导0return C;
}int main()
{string a, b;vector<int> A, B;cin >> a >> b;  // a = "123456"for (int i = a.size() - 1; i >= 0; i--) A.push_back(a[i] - '0');  // A = [6, 5, 4, 3, 2, 1]for (int i = b.size() - 1; i >= 0; i--) B.push_back(b[i] - '0');if (cmp(A, B)){auto C = sub(A, B);for (int i = C.size() - 1; i >= 0; i--) printf("%d", C[i]);}else{auto C = sub(B, A);printf("-");for (int i = C.size() - 1; i >= 0; i--) printf("%d", C[i]);}return 0;
}

高精度乘法

题目链接:

https://www.acwing.com/problem/content/795/

代码模版:

#include <iostream>
#include <vector>using namespace std;// C = A * b
vector<int> mul(vector<int> &A, int b)
{vector<int> C;int t = 0;  // 进位for (int i = 0; i < A.size() || t; i++){if (i < A.size()) t += A[i] * b;C.push_back(t % 10);t /= 10;}while (C.size() > 1 && !C.back()) C.pop_back();return C;
}int main()
{string a;int b;vector<int> A;cin >> a >> b;for (int i = a.size() - 1; i >= 0; i--) A.push_back(a[i] - '0');auto C = mul(A, b);for (int i = C.size() - 1; i >= 0; i--) printf("%d", C[i]);return 0;
}

高精度除法

题目链接:

https://www.acwing.com/problem/content/796/

代码模版:

#include <iostream>
#include <vector>
#include <algorithm>using namespace std;// A / b,商是C,余数是r
vector<int> div(vector<int> &A, int b, int &r)  // r是引用
{vector<int> C;  // 商r = 0;for (int i = A.size() - 1; i >= 0; i--){r = r * 10 + A[i];C.push_back(r / b);r %= b;}reverse(C.begin(), C.end());while (C.size() > 1 && !C.back()) C.pop_back();return C;
}int main()
{string a;int b;vector<int> A;cin >> a >> b;for (int i = a.size() - 1; i >= 0; i--) A.push_back(a[i] - '0');int r;auto C = div(A, b, r);for (int i = C.size() - 1; i >= 0; i--) printf("%d", C[i]);cout << endl << r << endl;return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/171323.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Visual Studio 2022安装教程完

一般使用Qt进行桌面应用程序开发使用VS+Qt组合。 将QT和VS2022结合开发的主要原因是为了充分利用两者的优势。QT是一个跨平台的应用程序开发框架,它提供了丰富的工具和库,使开发者能够轻松地创建图形化界面和功能强大的应用程序。VS2022是Microsoft Visual Studio的最新版本…

Linux内核中的overlay文件系统

一、简介 Docker 内核实现容器的功能用了linux 内核中的三个特性 Namespace、Cgroup、UnionFs&#xff0c;今天我们来说一下UnionFs。 linux UnionFs 实现的是overlay 文件系统 OverlayFs 文件系统分为三层&#xff0c; lower 是只读层 Upper 是可读写 Merged 是 lower 和U…

OD机考真题搜集:叠积木1

题目 有一堆长方体积木,它们的高度和宽度都相同,但长度不一。 小橙想把这堆积木叠成一面墙,墙的每层可以放一个积木,或将两个积木拼接起来,要求每层的长度相同。若必须用完这些积木,叠成的墙最多为多少层?如下是叠成的一面墙的图示,积木仅按宽和高所在的面进行拼接。 …

【数据结构】树与二叉树(廿六):树删除指定结点及其子树(算法DS)

文章目录 5.3.1 树的存储结构5. 左儿子右兄弟链接结构 5.3.2 获取结点的算法1. 获取大儿子、大兄弟结点2. 搜索给定结点的父亲3. 搜索指定数据域的结点4. 删除结点及其左右子树a. 逻辑删除与物理删除b. 算法DSTc. 算法解析d. 代码实现递归释放树算法DS e. 算法测试 5. 代码整合…

PPT 遇到问题总结(修改页码统计)

PPT常见问题 1. 修改页码自动计数 1. 修改页码自动计数 点击 视图——>幻灯片母版——>下翻找到计数页直接修改——>关闭母版视图

vue+springboot读取git的markdown文件并展示

前言 最近&#xff0c;在研究一个如何将我们git项目的MARKDOWN文档获取到&#xff0c;并且可以展示到界面通过检索查到&#xff0c;于是经过几天的摸索&#xff0c;成功的研究了出来 本次前端vue使用的是Markdown-it Markdown-it 是一个用于解析和渲染 Markdown 标记语言的 …

Cache学习(3):Cache地址映射(直接映射缓存组相连缓存全相连缓存)

1 Cache的与存储地址的映射 以一个Cache Size 为 128 Bytes 并且Cache Line是 16 Bytes的Cache为例。首先把这个Cache想象成一个数组&#xff0c;数组总共8个元素&#xff0c;每个元素大小是 16 Bytes&#xff0c;如下图&#xff1a; 现在考虑一个问题&#xff0c;CPU从0x0654…

城市生命线丨桥梁结构健康监测系统的作用

在城市建设当中&#xff0c;有非常多的城市基本建设&#xff0c;建设当中&#xff0c;桥梁作为不可忽视的一环&#xff0c;也需要有很多桥梁建设的智能监测系统&#xff0c;在这个桥梁结构健康监测系统中&#xff0c;桥梁的各个数值都能被监测得到。 WITBEE万宾使用城市生命线智…

Linux内核--内存管理(十三)vmalloc的实现

一、引言 二、vmalloc ------>2.1、vmalloc ------>2.2、对称多处理 SMP(Symmetric MultiProcessing) ------>2.3、非均衡访存模型 NUMA(Non-Uniform Memory Access) 三、数据结构 ------>3.1、vm_struct ------>3.2、vmap_area 四、vmalloc初始化 ---…

高并发内存池

1.什么是内存池 内存池动态内存分配与管理技术&#xff0c;对于程序员来说&#xff0c;通常情况下&#xff0c;动态申请内存需要使用new,delete,malloc,free这些API来申请&#xff0c;这样导致的后果是&#xff0c;当程序长时间运行之后&#xff0c;由于程序运行时所申请的内存…

探索 Rollup:简化你的前端构建流程

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

Linux 命令vim(编辑器)

(一)vim编辑器的介绍 vim是文件编辑器&#xff0c;是vi的升级版本&#xff0c;兼容vi的所有指令&#xff0c;同时做了优化和延伸。vim有多种模式&#xff0c;其中常用的模式有命令模式、插入模式、末行模式&#xff1a;。 (二)vim编辑器基本操作 1 进入vim编辑文件 1 vim …

排序算法:归并排序、快速排序、堆排序

归并排序 要将一个数组排序&#xff0c;可以先将它分成两半分别排序&#xff0c;然后再将结果合并&#xff08;归并&#xff09;起来。这里的分成的两半&#xff0c;每部分可以使用其他排序算法&#xff0c;也可以仍然使用归并排序&#xff08;递归&#xff09;。 我看《算法》…

day64

跨域请求伪造 一、csrf跨站请求伪造详解 CSRF&#xff08;Cross-Site Request Forgery&#xff09;跨站请求伪造是一种常见的网络攻击方式。攻击者通过诱导受害者访问恶意网站或点击恶意链接 将恶意请求发送到目标网站上利用受害者在目标网站中已登录的身份来执行某些操作从而…

电源的纹波

电源纹波的产生 我们常见的电源有线性电源和开关电源&#xff0c;它们输出的直流电压是由交流电压经整流、滤波、稳压后得到的。由于滤波不干净&#xff0c;直流电平之上就会附着包含周期性与随机性成分的杂波信号&#xff0c;这就产生了纹波。 在额定输出电压、电流的情况下…

【开题报告】基于SpringBoot的高端美发产品商城的设计与实现

1.研究背景 随着人们对美容、护肤和个人形象的重视&#xff0c;高端美发产品在市场上的需求越来越大。传统的线下销售方式存在一些问题&#xff0c;如地域限制、库存管理困难等&#xff0c;不能满足现代消费者的需求。因此&#xff0c;建立一个在线商城平台&#xff0c;可以让…

leetCode 1080.根到叶路径上的不足节点 + 递归 + 图解

给你二叉树的根节点 root 和一个整数 limit &#xff0c;请你同时删除树中所有 不足节点 &#xff0c;并返回最终二叉树的根节点。假如通过节点 node 的每种可能的 “根-叶” 路径上值的总和全都小于给定的 limit&#xff0c;则该节点被称之为 不足节点 &#xff0c;需要被删除…

SQL Injection (Blind)`

SQL Injection (Blind) SQL Injection (Blind) SQL盲注&#xff0c;是一种特殊类型的SQL注入攻击&#xff0c;它的特点是无法直接从页面上看到注入语句的执行结果。在这种情况下&#xff0c;需要利用一些方法进行判断或者尝试&#xff0c;这个过程称之为盲注。 盲注的主要形式有…

Python之内置函数和模块

学习的最大理由是想摆脱平庸&#xff0c;早一天就多一份人生的精彩&#xff1b;迟一天就多一天平庸的困扰。各位小伙伴&#xff0c;如果您&#xff1a; 想系统/深入学习某技术知识点… 一个人摸索学习很难坚持&#xff0c;想组团高效学习… 想写博客但无从下手&#xff0c;急需…

基于单片机的可升降助眠婴儿床(论文+源码)

1.系统设计 本课题为基于单片机的可升降助眠婴儿床系统&#xff0c;在设计目标上确定如下&#xff1a; 1. 可以实现婴儿床的升降&#xff0c;摇床功能控制&#xff1b; 2. 具有音乐播放功能&#xff0c;并且有多首曲目&#xff1b; 3. 用户可以通过按键或者红外遥控&#x…