沥川的算法学习笔记:基础算法(3)----高精度算法

        今天学习了acwing算法基础课的高精度算法,记录下算法模版!

        高精度算法在输入和输出时需要从后往前进行遍历!!!

1.高精度加法

        高精度加法(add): 这个函数接受两个整数向量 A 和 B,返回它们的和。函数首先确保 A 的长度不小于 B,如果不是,则交换它们。然后,它从低位到高位逐位相加,同时处理进位。如果某一位的和大于等于10,则将进位加到下一位的计算中。最后,如果最高位有进位,则需要将其添加到结果中。

// C = A + B, A >= 0, B >= 0
vector<int> add(vector<int> &A, vector<int> &B)
{if (A.size() < B.size()) return add(B, A);vector<int> C;int t = 0;for (int i = 0; i < A.size(); i ++ ){t += A[i];if (i < B.size()) t += B[i];C.push_back(t % 10);t /= 10;}if (t) C.push_back(t);return C;
}

2.高精度减法

        高精度减法(sub): 这个函数接受两个整数向量 A 和 B,返回它们的差。函数首先确保 A 大于或等于 B,如果不是,则无法进行减法运算。然后,它从低位到高位逐位相减,同时处理借位。如果某一位的被减数小于减数,则需要从高位借位。最后,去除结果中前导的零。

// C = A - B, 满足A >= B, A >= 0, B >= 0
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();return C;
}

3.高精度乘法

        高精度乘法(mul): 这个函数接受一个整数向量 A 和一个整数 b,返回它们的乘积。函数首先将 A 中的每个元素与 b 相乘,并将结果累加到结果向量 C 中。然后,它去除结果中前导的零。

// C = A * b, A >= 0, b >= 0
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() == 0) C.pop_back();return C;
}

4.高精度除法

        高精度除法(div): 这个函数接受一个整数向量 A 和一个整数 b,返回它们的商和余数。函数首先从 A 的最高位开始,逐位进行除法运算。在每一步中,它将被除数的一部分与除数进行比较,确定可以整除的最大倍数。然后将这个倍数作为商的一部分,并将相应的乘积从被除数中减去。最后,去除商中前导的零,并返回商和余数。

// A / b = C ... r, A >= 0, b > 0
vector<int> div(vector<int> &A, int b, int &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() == 0) C.pop_back();return C;
}

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

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

相关文章

对象存储访问管理

一、前言 对象存储是一种以对象为中心的存储方式&#xff0c;将数据存储为对象而不是文件&#xff0c;在对象存储中&#xff0c;每个对象都有唯一的标识符&#xff0c;这个标识符是由系统自动生成的。与传统文件系统不同&#xff0c;对象存储中不需要使用文件夹或路径来查找对…

富格林:总结安全交易出金策略

富格林指出&#xff0c;除了现货黄金之外&#xff0c;现货白银也是一种非常受欢迎的交易产品&#xff0c;但是选择正确的交易策略可以决定交易的成败。在选择交易策略时&#xff0c;需要考虑许多因素&#xff0c;并且要掌握正确的做单技能&#xff0c;安全提高盈利出金。接下来…

【Java】二叉树:数据海洋中灯塔式结构探秘(上)

个人主页 &#x1f339;&#xff1a;喜欢做梦 二叉树中有一个树&#xff0c;我们可以猜到他和树有关&#xff0c;那我们先了解一下什么是树&#xff0c;在来了解一下二叉树 一&#x1f35d;、树型结构 1&#x1f368;.什么是树型结构&#xff1f; 树是一种非线性的数据结构&…

Lucene(2):Springboot整合全文检索引擎TermInSetQuery应用实例附源码

前言 本章代码已分享至Gitee: https://gitee.com/lengcz/springbootlucene01 接上文。Lucene(1):Springboot整合全文检索引擎Lucene常规入门附源码 如何在指定范围内查询。从lucene 7 开始&#xff0c;filter 被弃用&#xff0c;导致无法进行调节过滤。 TermInSetQuery 指定…

xiaolin coding 图解网络笔记——HTTP篇

1. HTTP 是什么&#xff1f; HTTP 是超文本传输协议&#xff08;HyperText Transfer Protocol&#xff09;&#xff0c;一个用在计算机世界里专门在【两点】之间【传输】文字、图片、音频、视频等【超文本】数据的【约定和规范】。 2. HTTP 常见的状态码有哪些&#xff1f; …

AI在虚拟展厅的应用有哪些?有何优势?

AI&#xff08;人工智能&#xff09;与虚拟展厅的结合为展览行业带来了革命性的变革。以下是AI在虚拟展厅中的应用及其带来的优势&#xff1a; 一、AI在虚拟展厅中的应用 1、智能导览与讲解 AI技术可以创建虚拟数字人作为导览员&#xff0c;为参观者提供个性化的导览服务。 …

Python操作neo4j库py2neo使用之py2neo 删除及事务相关操作(三)

Python操作neo4j库py2neo使用之py2neo 删除及事务相关操作&#xff08;三&#xff09; py2neo 删除 1、连接数据库 from py2neo import Graph graph Graph("bolt://xx.xx.xx.xx:7687", auth(user, pwd), nameneo4j)2、删除节点 # 删除单个节点 node graph.node…

51c深度学习~合集8

我自己的原文哦~ https://blog.51cto.com/whaosoft/12491632 #patchmix 近期中南大学的几位研究者做了一项对比学习方面的工作——「Inter-Instance Similarity Modeling for Contrastive Learning」&#xff0c;主要用于解决现有对比学习方法在训练过程中忽略样本间相似关系…

ara::com 与 AUTOSAR 元模型的关系总结

原文链接&#xff1a;AUTOSAR_EXP_ARAComAPI的7章笔记&#xff08;6&#xff09; 整体说明 先是表明此前解释 ara::com API 思想和机制时未涉及具体 AP 元模型清单部分&#xff0c;本章旨在阐明 ara::com 与相关元模型部分的关系&#xff0c;且是较高层次的基本理解性介绍&am…

Android 日常使用整理

Android 日常使用 1.打开APP的权限设置页面2.打开设置页面的所有APP列表3.拨打电话4.本地安装apk5.打开系统照相机的方法5.打开系统相册6.图片一般处理6.view的一般处理7.文件的处理 1.打开APP的权限设置页面 Uri uri Uri.parse("package:" "包名"); In…

openharmony napi调试笔记

一、动态库的编译 第一种openharmony交叉编译链配置方法 使用的编译环境是ubuntu20.04 1、使用vscode配置openharmony sdk交叉编译环境 首先下载openharmony的sdk&#xff0c;如native-linux-x64-4.1.7.5-Release.zip 解压后native目录下就是交叉编译用的sdk 在要编译的源…

分离事务通信

分离事务通信&#xff08;或称为分离事务总线&#xff09;在计算机体系结构中&#xff0c;特别是在输入输出&#xff08;I/O&#xff09;系统的设计中&#xff0c;是一个重要的概念。以下是对分离事务通信的详细解释&#xff1a; 一、定义 分离事务通信是一种将总线事务分成请…

力扣面试经典 150(下)

文章目录 二叉树的层次遍历82. 二叉树的右视图83. 二叉树的层平均值84. 二叉树的层序遍历85. 二叉树的锯齿形层序遍历 二叉搜索树86. 二叉搜索树的最小绝对差87. 二叉搜索树中第K 小的元素88. 验证二叉搜索树 图89. 岛屿数量90. 被围绕的区域91. 克隆图92. 除法求值93. 课程表9…

Web3的核心技术:区块链如何确保信息安全与共享

在互联网不断迭代的进程中&#xff0c;Web3被视为下一代互联网的核心发展方向&#xff0c;其目标是构建更加开放、安全、去中心化的数字生态。在这一过程中&#xff0c;区块链作为核心技术&#xff0c;为信息安全与共享提供了全新解决方案。本文将深入探讨区块链如何在Web3中实…

Leetcode 生命游戏

以下是上述Java代码的算法思想及其逻辑的中文解释&#xff1a; 算法思想 这段代码实现了LeetCode第289题“生命游戏”的解决方案。核心思想是&#xff1a; 利用原地修改的方式&#xff08;in-place&#xff09;存储下一状态的变化&#xff1a; 通过引入额外的状态值&#xff0…

JavaScript 中 arguments、类数组与数组的深入解析

博客主页&#xff1a; [小ᶻZ࿆] 本文专栏: 前端 文章目录 &#x1f4af;前言&#x1f4af;什么是 arguments 对象2.1 arguments 的定义2.2 arguments 的特性2.3 使用场景 &#x1f4af;深入了解 arguments 的结构3.1 arguments 的内部结构arguments 的关键属性 3.2 类数组…

HTTP 协议的作用

HTTP 主要用于在客户端&#xff08;如 Web 浏览器&#xff09;和服务器之间传输超文本&#xff08;如 HTML 文档&#xff09;以及其他类型的数据&#xff08;如图片、视频、文件等&#xff09;。HTTP 协议的主要作用可以概括为如下几点&#xff1a; 信息交换&#xff1a; HTTP…

开源生态发展合作倡议

在信息技术发展的浪潮中&#xff0c;开源已成为全球创新的强劲引擎&#xff0c;深刻影响着各行各业的发展。今天&#xff0c;我们站在新的历史起点上&#xff0c;肩负着推动开源生态发展的重任。在此&#xff0c;开源欧拉&#xff08;openEuler&#xff09;、龙蜥&#xff08;O…

设计模式-创建型-抽象工厂模式

1.概念 工厂方法模式只能生产一个产品系列&#xff0c;抽象工厂可以生产多个产品系列 2.作用 多个具体产品组成一个产品族&#xff08;产品系列&#xff09;&#xff0c;一个具体工厂负责生产一个产品族 3.应用场景 系统所需产品间由依赖关系&#xff0c;可以划分为同一产…

智能合约运行原理

点个关注吧&#xff01;&#xff01; 用一句话来总结&#xff0c;智能合约就像是一个自动售货机&#xff1a;你投入硬币&#xff08;触发条件&#xff09;&#xff0c;选择商品&#xff08;执行合约&#xff09;&#xff0c;然后机器就会自动给你商品&#xff08;执行结果&…