[C++] 大数减/除法

目录

  • 高精度博客 - 前两讲
  • 高精度减法
  • 高精度除法
  • 高精度系列函数完整版

高精度博客 - 前两讲

讲次名称链接
高精加法[C++] 高精度加法(作用 + 模板 + 例题)
高精乘法[C++] 高精度乘法

高精度减法

void subBIG(int x[], int y[], int z[]){z[0] = max(x[0], y[0]);for(int i = 1; i <= z[0]; i++) z[i] = x[i] - y[i];for(int i = 1; i <= z[0]; i++){if(z[i] < 0){z[i] += 10;z[i + 1]--;}}while(z[z[0]] == 0 && z[0] > 1) z[0]--;
}

这个函数的思路还是在模拟列竖式, 最后的while是删除前缀0(以免出现类似000000的结果, 仅返回0)

高精度除法

记忆版

void divBIG(int x[],int y,int z[]){z[0] = x[0];int r = 0;for(int i = z[0]; i >= 1; i--){int t = r * 10 + x[i];z[i] = t / y;r = t % y;}while(z[z[0]] == 0 && z[0] > 1) z[0]--;
}

讲解版

void divBIG(int x[],int y,int z[]){z[0] = x[0];							// 有效位数设置// 模拟列竖式int r = 0;for(int i = z[0]; i >= 1; i--){			// 倒序循环int t = r * 10 + x[i];z[i] = t / y;r = t % y;}while(z[z[0]] == 0 && z[0] > 1) z[0]--;	// 去除前导零
}

高精度系列函数完整版

我们的3讲高精度即将结束, 给出完整的函数代码~

void s2BIG(string s, int a[]){int len = s.size();for(int i = 1; i <= len; i++){a[i] = s[len - i] - '0';}a[0] = len;
}void i2BIG(int n, int a[]){int cur = 0;while(n > 0){cur++;a[cur] = n % 10;n /= 10;}if(cur == 0) cur++;a[0] = cur;
}void printBIG(int a[]){int len = a[0];for(int i = len; i > 0; i--){cout << a[i];}cout << endl;
}void addBIG(int x[], int y[], int z[]){z[0] = max(x[0], y[0]);for(int i = 1; i <= z[0]; i++)z[i] = x[i] + y[i];for(int i = 1; i <= z[0]; i++){z[i + 1] += z[i] / 10;z[i] %= 10;if(z[z[0] + 1] != 0)z[0]++;}
}/*
如果x比y小, 则返回true
否则(y >= x)返回false
*/
bool cmpBIG(int x[], int y[]){int lx = x[0], ly = y[0];if(lx != ly) return lx < ly;for(int i = lx; i >= 1; i--){if(x[i] != y[i]) return x[i] < y[i];}return false;
}void mulBIG(int x[], int y[], int z[])
{for (int i = 1; i <= x[0]; i++){for (int j = 1; j <= y[0]; j++){z[i + j - 1] += x[i] * y[j];}}z[0] = max(x[0], y[0]);for (int i = 1; i <= z[0]; i++){z[i + 1] += z[i] / 10;z[i] %= 10;if (z[z[0] + 1] > 0) z[0]++;}while (z[z[0]] == 0 && z[0] > 1) z[0]--;
}void subBIG(int x[], int y[], int z[]){z[0] = max(x[0], y[0]);for(int i = 1; i <= z[0]; i++) z[i] = x[i] - y[i];for(int i = 1; i <= z[0]; i++){if(z[i] < 0){z[i] += 10;z[i + 1]--;}}while(z[z[0]] == 0 && z[0] > 1) z[0]--;
}void divBIG(int x[],int y,int z[]){z[0] = x[0];int r = 0;for(int i = z[0]; i >= 1; i--){int t = r * 10 + x[i];z[i] = t / y;r = t % y;}while(z[z[0]] == 0 && z[0] > 1) z[0]--;
}

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

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

相关文章

视频添加字幕脚本分享

脚本简介 这是一个给视频添加字幕的脚本&#xff0c;可以方便的在指定的位置给视频添加不同大小、字体、颜色的文本字幕&#xff0c;添加方式可以直接修改脚本中的文本信息&#xff0c;或者可以提前编辑好.srt字幕文件。脚本执行环境&#xff1a;windowsmingwffmpeg。本方法仅…

ubuntu nobel + qt5.15.2 设置qss语法识别正确

问题展示 解决步骤 首选项里面的高亮怎么编辑选择都没用。如果已经有generic-highlighter和css.xml&#xff0c;直接修改css.xml文件最直接&#xff01; 在generic-highlighter目录下找到css.xml文件&#xff0c;位置是&#xff1a;/opt/Qt/Tools/QtCreator/share/qtcreator/…

洛谷P7528 [USACO21OPEN] Portals G

P7528 [USACO21OPEN] Portals G luogu题目传送门 题目描述 Bessie 位于一个由 N N N 个编号为 1 … N 1\dots N 1…N 的结点以及 2 N 2N 2N 个编号为 1 ⋯ 2 N 1\cdots 2N 1⋯2N 的传送门所组成的网络中。每个传送门连接两个不同的结点 u u u 和 v v v&#xff08; u …

C++STL——priority_queue

优先队列 前言优先队列仿函数头文件 前言 本篇主要讲解优先队列及其底层实现。 优先队列 优先队列的本质就是个堆&#xff0c;其与queue一样&#xff0c;都是容器适配器&#xff0c;不过优先队列是默认为vector实现的。priority_queue的接口优先队列默认为大根堆。 仿函数 …

助力你的Neovim!轻松管理开发工具的魔法包管理器来了!

在现代编程环境中&#xff0c;Neovim 已经成为许多开发者的编辑器选择。而针对 Neovim 的各种插件与功能扩展&#xff0c;则是提升开发体验的重要手段。今天我们要介绍的就是一个强大而便捷的开源项目——mason.nvim&#xff0c;一个旨在简化和优化 Neovim 使用体验的便携式包管…

Java-Lambda 表达式

Lambda 表达式是 Java 8 引入的一项重要特性&#xff0c;它提供了一种简洁的方式来表示匿名函数。Lambda 表达式主要用于简化函数式接口的实现&#xff0c;使代码更加简洁和易读。以下是关于 Lambda 表达式的详细阐述&#xff1a; 1. Lambda 表达式的基本语法 Lambda 表达式的…

05 mysql之DDL

一、SQL的四个分类 我们通常可以将 SQL 分为四类&#xff0c;分别是&#xff1a; DDL&#xff08;数据定义语言&#xff09;、DML&#xff08;数据操作语言&#xff09;、 DCL&#xff08;数据控制语言&#xff09;和 TCL&#xff08;事务控制语言&#xff09;。 DDL 用于创建…

1 2 3 4 5顺序插入,形成一个红黑树

红黑树的特性与优点 红黑树是一种自平衡的二叉搜索树&#xff0c;通过额外的颜色标记和平衡性约束&#xff0c;确保树的高度始终保持在 O(log n)。其核心特性如下&#xff1a; 每个节点要么是红色&#xff0c;要么是黑色。根节点和叶子节点&#xff08;NIL节点&#xff09;是…

微服务6大拆分原则

微服务6大拆分原则 微服务拆分是指将一个大型应用程序拆分成独立服务的过程&#xff0c;在微服务拆分时&#xff0c;需要考虑以下6大微服务拆分原则 一、单一职责原则 微服务单一职责原则&#xff0c;是指每个微服务应该专注于解决一个明确定义的业务领域或功能&#xff0c;…

java: Compilation failed: internal java compiler error 报错解决方案

java: Compilation failed: internal java compiler error 报错解决方案 如下图所示&#xff1a; 在编译的时候提示 java: Compilation failed: internal java compiler error 原因&#xff1a;内部 java 编译错误,一般是编译版本不匹配。 问题解决 项目中有以下设置JDK版本…

介绍一下ReentrantLock 跟 Synchronized 区别

ReentrantLock 跟 Synchronized 区别 面试回答&#xff1a; 相同点&#xff1a; synchronized 和 ReentrantLock 都是用来保护资源线程安全的。 都可以保证可见性。 synchronized 和 ReentrantLock 都拥有可重入的特点。 从基本语义和概念上说 synchronized: Java 内建的…

第7次课 栈A

课堂学习 栈&#xff08;stack&#xff09; 是一种遵循先入后出逻辑的线性数据结构。 我们可以将栈类比为桌面上的一摞盘子&#xff0c;如果想取出底部的盘子&#xff0c;则需要先将上面的盘子依次移走。我们将盘子替换为各种类型的元素&#xff08;如整数、字符、对象等&…

ts装饰器

TypeScript 装饰器是一种特殊类型的声明&#xff0c;能够被附加到类声明、方法、访问符、属性或参数上。它本质上是一个函数&#xff0c;会在运行时被调用&#xff0c;并且被装饰的声明信息会作为参数传递给装饰器函数。 装饰器的分类 类装饰器 类装饰器作用于类构造函数&…

【金仓数据库征文】政府项目数据库迁移:从MySQL 5.7到KingbaseES的蜕变之路

摘要&#xff1a;本文详细阐述了政府项目中将 MySQL 5.7 数据库迁移至 KingbaseES 的全过程&#xff0c;涵盖迁移前的环境评估、数据梳理和工具准备&#xff0c;迁移实战中的数据源与目标库连接配置、迁移任务详细设定、执行迁移与过程监控&#xff0c;以及迁移后的质量验证、系…

VB与Excel无缝连接实现指南

一、前期准备 引用Excel对象库&#xff1a; 在VB开发环境中&#xff0c;点击"项目"→"引用" 勾选"Microsoft Excel XX.X Object Library"&#xff08;XX.X代表版本号&#xff09; 创建Excel应用程序对象&#xff1a; vb Dim xlApp As Excel.…

【MySQL】数据库、数据表的基本操作

个人主页&#xff1a;Guiat 归属专栏&#xff1a;MySQL 文章目录 1. MySQL基础命令1.1 连接MySQL1.2 基本命令概览 2. 数据库操作2.1 创建数据库2.2 查看数据库2.3 选择数据库2.4 修改数据库2.5 删除数据库2.6 数据库备份与恢复 3. 表操作基础3.1 创建表3.2 查看表信息3.3 创建…

cursor sign in 网页登录成功,sursor软件里一直登陆不成功没有登陆信息

今天在使用cursor登陆无法登陆&#xff0c;点击sigin in打开网址登陆成功后&#xff0c;软件里一直无法显示登陆信息。 点击sigin in 在网址登陆成功后 解决办法&#xff1a; 方法1.设置windows默认应用为chrome. 办法2: 删除代理 cursor上ctrl, 打开设置&#xff0c;找到…

深入理解卷积神经网络的输入层:数据的起点与预处理核心

内容摘要 本文围绕卷积神经网络输入层展开&#xff0c;详细介绍其在网络中的重要作用&#xff0c;包括接收不同领域数据的形式及传递数据的过程。深入解读数据预处理的关键操作&#xff0c;如去均值、归一化和PCA/白化。助力读者透彻理解输入层&#xff0c;为构建高效卷积神经…

解决 MySQL 数据库无法远程连接的问题

在使用 MySQL 数据库时&#xff0c;遇到这样的问题&#xff1a; 本地可以连接 MySQL&#xff0c;但远程机器连接时&#xff0c;总是报错 Host ... is not allowed to connect to this MySQL server。 这通常是因为 MySQL 的用户权限或配置限制了远程访问。 1. 登录 MySQL 数据…

MCP认证全解析:从零到微软认证专家

MCP认证全解析&#xff1a;从零到微软认证专家 什么是MCP认证&#xff1f; Microsoft Certified Professional&#xff08;MCP&#xff09;是由微软官方颁发的技术认证&#xff0c;旨在验证IT从业者在微软技术栈&#xff08;如Azure、Windows Server、SQL Server等&#xff0…