高精度减法详解

2023-11-10

高精度减法详解

建议先学习高精度加法:

高精度加法详解

当减数,被减数,差特别大时,大到无法用long long来存储,外面就需要使用高精度算法解决。

算法基本思想:

存储就是和加法差不多,都是用数组解决问题。

计算就使用小学竖式计算即可。
在这里插入图片描述

算法描述:
  • 字符数组存储。先字符数组存储,计算长度,比较减数和被减数的大小。
  • 将字符数组倒转存储在整数数组中
  • 将C[0]=A[0]-B[0],如果A[0]<B[0]则向前借位。如此持续循环解决
  • 注意最后结果C数组的最高位除零。
  • 最后逆序输出,得到结果。
接着代码实现:
#include <iostream>
#include <cstring>
using namespace std;
#define max 100000000
char a[max],b[max],temp[max];
int A[max],B[max],C[max],lena,lenb;
int main(){
	cin>>a;
	cin>>b;
	lena=strlen(a);
	lenb=strlen(b);
	if(lena<lenb||strcmp(a,b)<0&&lena==lenb)
	{
		cout<<"-";
		strcpy(temp,a);
		strcpy(a,b);
		strcpy(b,temp);
		lena=strlen(a);
		lenb=strlen(b);
	}
	for(int i=0;i<lena;++i)
	A[i]=a[lena-1-i]-'0';
	for(int i=0;i<lenb;++i) 
	B[i]=b[lenb-1-i]-'0';
	for(int i=0;i<lena;++i)
	{
		if(A[i]<B[i])
		{
			A[i]+=10;
			A[i+1]--;
			C[i]=A[i]-B[i];
		}
		else {
			C[i]=A[i]-B[i];
		}
	}
	for(int i=lena-1;i>=0;--i)
	{
		if(C[i]==0&&lena>1)
		lena--;
		else 
		break;
	}
	for(int i=lena-1;i>=0;--i)
	cout<<C[i];
	return 0;
	
}

练习题:

https://www.luogu.com.cn/problem/P2142

题目描述

高精度减法。

输入格式

两个整数 a,ba,ba,b(第二个可能比第一个大)。

输出格式

结果(是负数要输出负号)。

输入输出样例

输入 #1

2
1

输出 #1

1
说明/提示
  • 20%20%20% 数据 a,ba,ba,b 在 long long 范围内;
  • 100%100%100% 数据 0<a,b≤10100860<a,b\le 10^{10086}0<a,b≤1010086。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

高精度减法详解 的相关文章

随机推荐

  • 主充/pd charger 调试精品文章转载

    PD充电调试问题解析 一 之前一直对充电的调试有了解 这次经过一个案子 对最新的充电技术和方案有所了解 现记录一下 充电框图 几个关键的概念 1 PD的输出电流 电压 他的对象是 充电IC PD Out gt gt Charge IN 2
  • Java:多线程概述与创建方式

    文章目录 Java 多线程概述与创建方式 进程和线程 并发与并行 多线程的优势 线程的创建和启动 继承Thread类 start 和run 实现Runnable接口 实现Callable接口 创建方式的区别 Java 多线程概述与创建方式
  • 垃圾回收机制

    垃圾回收机制 垃圾回收一般分为两步 分别是 1 发现无用的对象 2 回收无用对象站用的内存空间 垃圾回收常用的两种算法 1 引用计数法 优点是算法简单 缺点是 循环引用大额无用对象无法识别 2 引用可达法 根搜索算法 堆内存划分成 年轻代
  • docker---runlike查看容器run命令详情

    文章目录 一 安装 二 使用 一 安装 一般情况下linux系统中都内置了pip3 没有的话先手动安装下 yum install python3 pip 安装runlike pip3 install runlike 二 使用 runlike
  • html为什么图片有的显示不出来,网页显示不出图片怎么办 6种常见的解决方案详解...

    我们上网的时候 可能因为种种原因导致网页显示不出图片 那么网页显示不出图片怎么办呢 有哪些解决的方法 接下来小编就简单的给大家介绍一下网页显示不出图片怎么办 网页显示不出图片怎么办 1 网速问题 网页显示不出图片有可能是因为电脑的网速比较慢
  • 【每日练习】从两个数字数组里生成最小数字

    题目描述 给你两个只包含 1 到 9 之间数字的数组 nums1 和 nums2 每个数组中的元素 互不相同 请你返回最小的数字 两个数组都至少包含这个数字的某个数位 示例 示例 1 输入 nums1 4 1 3 nums2 5 7 输出
  • Seaweedfs部署

    软件下载地址 https github com seaweedfs seaweedfs releases 创建工作目录 mkdir wkspace contribs seaweedfs 将下载的组件包放到此目录下 解压组件包 tar xvf
  • tar打包隐藏文件

    默认情况下 tar打包当前目录是不会包含隐藏文件的 但奇葩的是 他会包含当前目录子目录下的隐藏文件 bm6j80 aaa find aa aa cc bb bm6j80 aaa tar cvf test tar aa aa cc bb bm
  • 数组对象深拷贝

    数组对象深拷贝再研究 常见的深层数组对象拷贝方式有 concat 解构 JSON解析 函数递归等 concat var ary2 ary1 concat es6解构 var ary2 ary1 var ary2 ary1 JSON解析 va
  • 6行代码最简单的VB6标准DLL工程

    vb6可以做标准DLL方法很简单 利用了一个微软未公开的方法 不需要LINK工具 牛人还可以把DLL加上多线程等功能 再加上VB头初始化 VB6标准DLL就无所不能了 VB6做的控件 又是标准DLL 又是COM对象 还可以单文件运行 exe
  • Spring3学习笔记之(spring core 之DI(Bean作用域))

    Bean的作用域 什么是作用域呢 即 scope 在面向对象程序设计中一般指对象或变量之间的可见范围 而在Spring容器中是指其创建的Bean对象相对于其他Bean对象的请求可见范围 Spring提供 singleton 和 protot
  • 深度强化学习系列: “奖励函数”的设计和设置(reward shaping)

    概述 前面已经讲了好几篇关于强化学习的概述 算法 DPG gt DDPG 也包括对环境OpenAI gym的安装 baseline算法的运行和填坑 虽然讲了这么多 算法也能够正常运行还取得不错的效果 但是一直以来忽略了一个非常重要的话题 那
  • 【100%通过率 】华为O机试C++/java/python【箱子之字形摆放】 2022 Q4 A卷

    华为OD机试 题目列表 2023Q1 点这里 2023华为OD机试 刷题指南 点这里 题目描述 有一批箱子 形式为字符串 设为str 要求将这批箱子按从上到下以之字形的顺序摆放在宽度为 n 的空地 请输出箱子的摆放位置 例如 箱子ABCDE
  • Yolov5的安装配置及实现目标检测

    本文内容 本文主要介绍anaconda下yolov5的安装配置方法 以及如何实现目标检测 目录 一 yolov5的下载安装 一 环境配置 二 下载yolov5 二 yolov5测试 一 图片测试 二 视频测试 三 调用手机摄像头实现实时检测
  • 如何使用 Docker 部署 FreeGPT-WebUI:一个简单的教程

    目录 1 FreeGPT WebUI 项目简介 2 安装 Docker 3 从 Docker Hub 拉取 FreeGPT WebUI 镜像 4 使用 Docker 运行 FreeGPT WebUI 应用程序 5 访问 FreeGPT We
  • python菜鸟学习Day1(数据类型)

    第一节 数据类型 int 整型 python2中有int long python3中只有int float 浮点型 string 字符串型 bool 布尔型 变量命名 字母 数字 下划线 数据不能开头 大小写敏感 不能和系统关键字 函数名
  • [2020.1.19][udev] 金步国udev

    金步国index里有4条udev相关的 1 udevadm 2 udev 3 systemd udevd service udevd守护进程 4 udev conf 1 udevadm 1 udevadm info options devp
  • linux 安装nginx+php +mysql 安装

    安装make make命令是GNU的工程化编译工具 用于编译众多相互关联的源代码问价 以实现工程化的管理 提高开发效率 安装PCRE库 g wget yum y install gcc gcc c wget pcre pcre devel
  • IP 地址解析与子网划分教程

    数据来源 一 简单局域网的构成 局域网 一般称为内网 简单局域网的构成 交换机 网线 PC 其他IT终端 交换机 用来组建内网的局域网的设备 交换机并不能让电脑上网 需要通过路由器 路由器 路由器可以为局域网自动分配IP和虚拟拨号 电脑需要
  • 高精度减法详解

    高精度减法详解 建议先学习高精度加法 高精度加法详解 当减数 被减数 差特别大时 大到无法用long long来存储 外面就需要使用高精度算法解决 算法基本思想 存储就是和加法差不多 都是用数组解决问题 计算就使用小学竖式计算即可 算法描述