高精度除法

高精度除法

  • 思路
  • 题目

高进度数字指的是 数字的大小非常非常大,大到所有整型数据类型都存不下,本篇讨论的为一个高精度数除以一个较小的数。

思路

高精度除法的计算方式和我们人类平时计算除法的过程是一样的,我们来模拟一下。
在这里插入图片描述
首先 2 除 3 等于 0 余 2。
在这里插入图片描述
接着23 除以 3 等于 7 余 2。
在这里插入图片描述
接着25除 3 等于8 余 1 … 以此类推。

有了思路之后我们来看代码。

题目

给定两个非负整数(不含前导 0 0 0 A , B A,B AB,请你计算 A / B A / B A/B 的商和余数。

输入格式

共两行,第一行包含整数 A A A,第二行包含整数 B B B

输出格式

共两行,第一行输出所求的商,第二行输出所求余数。

数据范围

1 ≤ A 的长度 ≤ 100000 1 \le A的长度 \le 100000 1A的长度100000,
1 ≤ B ≤ 10000 1 \le B \le 10000 1B10000,
B B B 一定不为 0 0 0

输入样例:

7
2

输出样例:

3
1

首先是准备阶段:

在这里插入图片描述

其中 a存的是 被除数的字符串形式,b存的是除数,r是余数,vector容器A用于存储数字。

输入环节:
在这里插入图片描述
注意这里一定要减去 字符0.

高精度减法 当中为什么 存在vector容器当中是倒着存是因为要与 高精度加法、减法、乘法保持一致。

在这里插入图片描述
接着将除法封装成一个函数,该函数返回 一个vector容器,容器里面存的是 商。

接着倒着输出一遍,再输出 余数。

对于除法函数来说,返回类型为 vector< int >,参数为三个引用。

在这里插入图片描述
接着遍历容器A。
在这里插入图片描述
注意除法和高精度加法、减法、乘法不同的是,这里的for循环是从后往前遍历的,也就是从数字的高位向低位遍历。

由于为了和高精度加法、减法、乘法保持一致,再加上后续的除前导0,所以我们需要将容器C 倒过来,所以需要用到 reverse 函数。

使用该函数时,需要包含对应的头文件。
在这里插入图片描述
在这里插入图片描述

在除法中会出现有前导0的问题,所以我们需要像高精度减法那样,处理前导0。

在这里插入图片描述
这里也体现了为什么需要将数组翻转过来,因为数组 删后面的数据比较方便。

完整代码:

#include <iostream>
using namespace std;
#include <string>
#include <vector> 
#include <algorithm>string a;
int b, r;
vector<int> A;vector<int> div(vector<int>& A, int& b, int& r)
{vector<int> C;//返回的结果容器r = 0;//最高位的时候上一位的余数为0//这个语句可以省略,因为全局变量未初始化时为0for (int i = A.size()-1; i >= 0; i--){r = r * 10 + A[i];//上一位的余数 * 10 加上本位的数。C.push_back(r / b);//计算该位的 商r %= b;//计算下一位的余数。}reverse(C.begin(), C.end());//将容器C 翻转while (C.size() > 1 && C.back() == 0) C.pop_back();return C;}int main()
{cin >> a >> b;for (int i = a.size()-1; i >= 0; i--) A.push_back(a[i] - '0');auto C = div(A, b, r);for (int i = C.size()-1; i >= 0; i--) cout << C[i];cout << endl << r;return 0;
}

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

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

相关文章

pikachu中pkxss数据库怎么创建

在用小皮时候&#xff0c;只是知道个pikachu这个数据库&#xff0c;跟着视频看人家用pkxss数据库&#xff0c;自己也想用&#xff0c;查看了很多资料&#xff0c;又蒙又查&#xff0c;终于明白怎么弄&#xff0c;特此传授经验 图像中画横线的就是平常怎么创建数据库的&#xff…

Qt creator day2练习

使用手动连接&#xff0c;将登录框中的取消按钮使用第二种方式&#xff0c;右击转到槽&#xff0c;在该函数中&#xff0c;调用关闭函数&#xff0c;将登录按钮使用Qt4版本的连接到自定义的槽函数中&#xff0c;在槽函数中判断ui界面上输入的账号是否为“admin”&#xff0c;密…

vue3-openlayers 使用tianditu,wmts和xyz等source加载天地图切片服务

本篇介绍一下使用vue3-openlayers加载天地图切片&#xff0c;三种方法&#xff1a; 使用tianditu&#xff08;ol-source-tianditu内部实现其实用的wmts&#xff09;使用wmts&#xff08;ol-source-wmts&#xff09;使用xyz&#xff08;ol-source-xyz&#xff09; 1 需求 vue…

Kotlin 实战小记:No-Arg 引用解决 No constructor found的问题

一、问题 新的项目试用一下kotlin, 调用数据库查询数据的时候报了这个问题&#xff1a;org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.executor.ExecutorException: No constructor found in com.neusoft.collect.entity.cm.CmRoom matc…

Linux搭建我的世界乌托邦探险之旅3.2整合包服务端,Minecraft开服教程

Linux服务器使用MCSM10 搭建 我的世界 乌托邦探险之旅3.2 整合包 服务端 的教程&#xff0c;Minecraft整合包开服教程。 大型养老探险整合包&#xff1a;乌托邦探险之旅3.2&#xff0c;探索上千种结构&#xff0c;造访丰富的自然群系&#xff0c;欣赏生动的生物动画&#xff0…

【小白学Python】爬取数据(三)

【小白学Python】自定义图片的生成&#xff08;一&#xff09; 【小白学Python】自定义图片的生成&#xff08;二&#xff09; 本文继前两篇文章之后&#xff0c;将前两篇生成图片的文字自动化爬取生成&#xff0c; 爬取zhihu的部分问答数据&#xff0c;仅作本人的学习使用。…

29. 透镜阵列

导论&#xff1a; 物理传播光学&#xff08;POP&#xff09;不仅可以用于简单系统&#xff0c;也可以设计优化复杂的光学系统&#xff0c;比如透镜阵列。 设计流程&#xff1a; 透镜阵列建模 在孔径类型中选择“入瞳直径”&#xff0c;并输入2 在视场设定中。设置一个视场&…

STM32高级控制定时器(STM32F103):PWM输出模式

目录 概述 1 PWM模式介绍 2 PWM类型 2.1 PWM边缘对齐模式 2.2 PWM中心对齐模式 3 使用STM32Cube配置PWM 3.1 STM32Cube配置参数 3.2 生成Project 4 设置PWM占空比 4.1 函数介绍 4.3 函数源码 5 测试代码 5.1 编写测试代码 5.2 函数源码 6 运行代码 概述 本文主…

一平台一张图,撑起危化生产“安全伞”

安全生产是永恒的主题&#xff0c;是一切工作的基础。 风险辨识不到位、特种作业不合规、隐患治理不彻底、应急能力不匹配……如何从消除事故隐患、从根本上解决问题&#xff1f;随着新一代信息技术和安全生产的深度融合&#xff0c;安全生产的管理方式也在发生深刻变化。 提前…

基于STM32的智能水产养殖系统(三)

智能水产养殖系统设计 背景 智能水产养殖系统的设计背景主要源于对传统养殖方式的现代化需求和技术进步的推动。以下是该背景的详细阐述&#xff1a; 现代化养殖需求增加&#xff1a; 随着人口增长和食品需求的提升&#xff0c;传统的水产养殖方式面临诸多挑战&#xff0c;如资…

4、matlab双目相机标定实验

1、双目相机标定原理及流程 双目相机标定是将双目相机系统的内外参数计算出来&#xff0c;从而实现双目视觉中的立体测量和深度感知。标定的目的是确定各个摄像头的内部参数&#xff08;如焦距、主点、畸变等&#xff09;和外部参数&#xff08;如相机位置、朝向等&#xff09…

海南云亿商务咨询有限公司抖店开店怎么样?

在数字化浪潮席卷全球的今天&#xff0c;电商行业日新月异&#xff0c;其中抖音电商以其独特的短视频直播模式&#xff0c;迅速崛起成为电商领域的新贵。海南云亿商务咨询有限公司&#xff0c;作为抖音电商服务的佼佼者&#xff0c;凭借专业的团队和丰富的经验&#xff0c;致力…

代理配置SQUID

目录 SQUID代理服务器配置 监听浏览器访问记录 拒绝访问配置 SQUID代理服务器配置 实验系统 windows 10 xxxxx Roucky_linux9.4 192.168.226.22 监听浏览器访问记录 1. 安装squid yum install squid -y 2. 编辑squid配置文件 vim /etc/squid…

一个很好用的地图工具的使用:思极地图,以及vue+思极地图的使用

前言&#xff1a; 随着现在国网等一部分公司的需求&#xff0c;在线地图-思极地图 出现在我们眼前&#xff0c;给我们带来了很多便利&#xff0c;这里分享下他的信息与使用。 实现效果&#xff1a; 相关资料&#xff1a; 1、官网地址 2、在线地址 3、官方api地址 实现步骤-js…

从Instance classifier重新思考多实例学习

弱监督的WSI分类通常被形式化为多实例学习&#xff08;MIL&#xff09;问题&#xff0c;其中每张slide都被视为一个bag&#xff0c;从中切出的patch被视为实例。现有的方法要么通过伪标记训练实例分类器&#xff0c;要么通过注意力机制将实例特征聚合为bag特征&#xff0c;然后…

新能源汽车的能源动脉:中国星坤汽车电缆在新能源汽车电气化中的应用!

随着新能源汽车行业的蓬勃发展&#xff0c;汽车电缆组件作为汽车电气系统的核心组成部分&#xff0c;其重要性日益凸显。中国星坤汽车电缆组件以其卓越的性能和创新技术&#xff0c;为汽车的电能传输、信号传递和控制提供了坚实的保障。本文将深入解析星坤汽车电缆组件的特性、…

从社交网络到元宇宙:Facebook的战略转型

随着科技的迅猛发展和数字化时代的深入&#xff0c;社交网络已不再局限于简单的信息交流和社交互动&#xff0c;而是逐步向更广阔、更深远的虚拟现实空间——元宇宙&#xff08;Metaverse&#xff09;转变。作为全球最大的社交网络平台之一&#xff0c;Facebook正在积极推动这一…

和服务器建立联系——6.10山大软院项目实训1

下面介绍我如何在自己的项目中&#xff0c;根据aigc组的接口&#xff08;如下图&#xff09;&#xff0c;在Unity中和服务器建立联系并发出接受请求的&#xff1a; 这是一个通过HTTP POST方法调用的接口&#xff0c;需要发送JSON格式的数据。在Unity中实现这样的功能&#xff0…

C++语法15 多分支结构(if多分支与switch结构)

if else if else 多分支结构基本框架 if&#xff08;条件1&#xff09;语句1; //满足条件1就执行 else if&#xff08;条件2&#xff09;语句2; //不满足条件1&#xff0c;但是满足条件2执行 else if (条件3&#xff09;语句3; //不满足条件1和条件2&#x…

HACH哈希紫外可见光分光光度计维修DR6000

DR3900可见分光光度计内置准双光束光学系统&#xff0c;自动校准波长&#xff0c;该可见光分光光度计预置200多个用户程序&#xff0c;几乎覆盖常规水质参数&#xff0c;彩色触屏搭载中文操作界面&#xff0c;可自动分析检测并存储2000组实验数据&#xff0c;是一款测量准确的可…