当前位置: 首页 > news >正文

高精度(加减乘除)

高精度算法出现的原因

当参与运算的数的范围大大的超出了标准数据类型,如int(-2147483648 ~ 2147483647)或者long long的范围,就需要使用高精度算法来进行数的运算。高精度运算的特点是代码长度比较长,本质是对数学运算过程的模拟。既然不能使用标准数据类型,所以考虑使用字符串或者数组来存储这类大数据。

常用的一些最大值符号

  • 0x7f7f7f7f —— 比int的最大值小一点
  • 0x3f3f3f3f —— 比int的最大值的一半小一点
  • INT_MAX —— int的最大值
#include <iostream>
#include <climits>
using namespace std;int main()
{cout << 0x7f7f7f7f << endl; //21 3906 2143cout << 0x3f3f3f3f << endl; //10 6110 9567cout << INT_MAX << endl;    //21 4748 3647return 0;
}

高精度加法分析

对于小数据,125 + 25 = 150,其运算过程如下:
在这里插入图片描述
由于涉及到进位,所以在计算机进行运算的时候,会采取倒序运算的方式。如果在运算时需要进位,则向下一位进位即可。
在这里插入图片描述
最后,需要倒序输出结果 :051,得到150,即最后的答案

高精度加法运算步骤:

  • 使用字符数组存储两个较大的数
  • 把两个数逆序转化为整数数组
  • 诸位相加运算,在运算的时候处理进位。
  • 相加之后的结果最多比原来较长的数多一位,最后逆序输出即可

高精度加法模板

待更新

高精度减法分析

在高精度减法中,需要注意:

  • 如果a < b,则需要先交换a与b,最后在输出结果前加上负号
  • 在高精度计算时,如果a[i] < b[i],则需要先向高位借一位

高精度减法模板

待更新

高精度乘法分析

在日常生活中,计算两个数字相乘,其过程是什么样子的呢?
在这里插入图片描述
通过上图,不难看出,1234 * 32 = 39488。那么,如何使用计算机来模拟上述的乘法运算过程是实现高精度乘法的核心所在。如果将数字全部转化为字符,那么上图过程则抽象为下图所示:
在这里插入图片描述
通过上图,不难发现下面的对应关系:('A —> B’表示A与B有关)

A[1] * B[1] ——> C[1]
A[2] * B[1] ——> C[2]
A[3] * B[1] ——> C[3]
A[4] * B[1] ——> C[4]A[1] * B[2] ——> C[2]
A[2] * B[2] ——> C[3]
A[3] * B[2] ——> C[4]
A[4] * B[2] ——> C[5]

通过观察总结,发现下面规律:
A[i] * B[j] —> C[i + j - 1]
高精度算法核心代码:

c[i + j - 1] += (a[i] * b[j]);
c[i + j] += c[i + j - 1] / 10;
c[i + j - 1] %= 10;

最后需要注意的是,在高精度乘法中,得到的结果可能是多个0(如下图所示),所以删除前导0需要用while循环而不是if语句。
在这里插入图片描述

高精度乘法模板

待更新

高精度除法分析

高精度除法模板

待更新

相关文章:

高精度(加减乘除)

高精度算法出现的原因 当参与运算的数的范围大大的超出了标准数据类型&#xff0c;如int&#xff08;-2147483648 ~ 2147483647&#xff09;或者long long的范围&#xff0c;就需要使用高精度算法来进行数的运算。高精度运算的特点是代码长度比较长&#xff0c;本质是对数学运算…...

java企业数据管理系统

项目介绍 此项目为企业数据管理系统的后端部分&#xff0c;前端部分请参考vue-admin&#xff0c;项目实现了菜单管理、用户管理、角色管理和权限管理四个基础模块&#xff0c;前端菜单管理结合动态路由可自由添加菜单。结合Shiro权限管理实现了菜单和按钮的权限控制。 ❝ 前端…...

【云原生进阶之PaaS中间件】第二章Zookeeper-3.1分布式架构介绍

1 分布式架构详解 1.1 分布式发展历程 1.1.1 单点集中式 特点&#xff1a;App、DB、FileServer都部署在一台机器上。并且访问请求量较少 1.1.2 应用服务和数据服务拆分 特点&#xff1a;App、DB、FileServer分别部署在独立服务器上。并且访问请求量较少 1.1.3 使用缓存改善…...

2023-09-11力扣每日一题

链接&#xff1a; 630. 课程表 III 题意 一个课程花费ai天&#xff0c;需要在bi天之前修好才算成功&#xff0c;求最多能修几个课 解&#xff1a; ddl越靠后的应该越晚做&#xff0c;所以先按照b排序&#xff08;这还用问为什么吗&#xff1f; 然后通过维护一个优先队列存…...

windows10使用wheel安装tensorflow2.13.0/2.10.0 (保姆级教程)

安装过程 安装虚拟环境安装virtualenv安装满足要求的python版本使用virtualenv创建指定python版本的虚拟环境 安装tensorflow安装tensorflow-docs直接下载使用wheel下载 在VSCode编辑器中使用虚拟环境下的python解释器&#xff0c;并使用tensorflow常见错误 注意&#xff1a; t…...

【LeetCode与《代码随想录》】贪心算法篇:做题笔记与总结-JavaScript版

代码随想录 贪心的本质是选择每一阶段的局部最优&#xff0c;从而达到全局最优。 文章目录 455. 分发饼干376. 摆动序列53. 最大子数组和122. 买卖股票的最佳时机 II55. 跳跃游戏45. 跳跃游戏 II1005. K 次取反后最大化的数组和134. 加油站135. 分发糖果&#xff08;困难&#…...

Http客户端OkHttp的基本使用

简介 OkHttp是一个强大的开源HTTP客户端&#xff0c;它被广泛用于Android和Java应用程序中。OkHttp具有简单易用的API&#xff0c;提供了许多高级功能&#xff0c;如连接池、请求压缩和缓存等。 依赖 要使用OkHttp&#xff0c;需要在项目的构建文件中添加以下依赖&#xff1…...

认识网线上的各种参数标号

最近工作需要&#xff0c;接触了很多不同类型的网线&#xff0c;为了能够区分不同型号的网线&#xff0c;特意做一篇笔记用来学习&#xff0c;如有记录有误之处&#xff0c;欢迎大家指正~初步认识网线 常用的网络电缆有三种&#xff1a;双绞线、同轴电缆和光纤电缆&#xff08…...

软件测开记录(一)

知识点汇总 14&#xff1a;00面试&#xff0c;14&#xff1a;06就出来了&#xff0c;问的问题有点变态。。。 python自动化测试学习路线&#xff08;从入门到精通&#xff09; 单元知识点 测试常用工具 常用的客户端和服务器端开发和测试工具 服务器与客户端常用测试工具与…...

基数排序之代码解析

基数排序是生活中咱们写程序用的比较少的排序&#xff0c;但是这个排序比较巧妙&#xff0c;今天就给大家讲一讲&#xff0c;原理都在代码里面&#xff0c;下面会给一些解释。 import java.util.Arrays;public class Code04_RadixSort {// only for no-negative valuepublic s…...

使用C语言EasyX 创建动态爱心背景

简介 在计算机图形学的世界中&#xff0c;有很多方法可以使程序的界面更加吸引人。在本篇博客中&#xff0c;我将向大家介绍如何使用 EasyX 图形库在 C 中创建一个动态的爱心背景。这不仅是一个简单的动画效果&#xff0c;它还包括背景的星星、旋转的心形以及一个美观的背景渐…...

springboot redisTemplate.opsForValue().setIfAbsent返回null原理

一、版本 springboot版本&#xff1a;spring-boot-starter-data-redis 2.1.6 redisson版本&#xff1a;redisson-spring-boot-starter 3.11.5 二、场景 Boolean res redisTemplate.opsForValue().setIfAbsent("key","value");以上代码同一时间多次执行…...

Python调用Jumpserver的Api接口增删改查

引言 Jumpserver是一款强大的堡垒机系统&#xff0c;可以有效管理和控制企业内部服务器的访问权限&#xff0c;提高网络安全性。本文将介绍如何使用Python编程语言&#xff0c;结合Jumpserver提供的API接口&#xff0c;实现对跳板机的管理和操作。 1、什么是Jumpserver&#…...

后端入门教程:从零开始学习后端开发

1. 编程基础 首先&#xff0c;作为一名后端开发者&#xff0c;你需要掌握至少一门编程语言。Python是一个很好的选择&#xff0c;因为它易于学习且功能强大。让我们从一个简单的示例开始&#xff0c;在控制台输出 "Hello, World!"。 2. 学习Web基础 了解Web开发基…...

无涯教程-JavaScript - DB函数

描述 DB函数使用固定余额递减法返回指定期间内资产的折旧。 语法 DB (cost, salvage, life, period, [month])争论 Argument描述Required/OptionalCostThe initial cost of the asset.RequiredSalvageThe value at the end of the depreciation (sometimes called the salv…...

2023年财务顾问行业研究报告

第一章 行业概况 1.1 定义及分类 财务顾问&#xff08;Financial Advisor&#xff0c;FA&#xff09;也被称为融资顾问&#xff0c;主要为创业公司提供投资和融资的专业服务。他们在创业者和投资者之间扮演着至关重要的中介角色&#xff0c;为双方搭建桥梁&#xff0c;确保投…...

2023SICTF ROUND2 baby_heap

附件&#xff1a;baby_heap libc版本&#xff1a;glibc2.23 思路一&#xff1a;通过house of orange泄露libc地址&#xff0c;然后通过unsorted bin attack将main_arena88地址写入到chunk_ptr&#xff08;也就是申请出来的堆数组&#xff09;中&#xff0c;这时候unsorted bi…...

buuctf crypto 【密码学的心声】解题记录

1.打开可以看到一个曲谱 2.看到曲谱中的提示埃塞克码可以想到ascii码&#xff0c;没有八可以联想到八进制&#xff0c;而八进制又对应着三位的二进制&#xff0c;然后写个脚本就好了 oct [111,114,157,166,145,123,145,143,165,162,151,164,171,126,145,162,171,115,165,143,…...

论文阅读 (100):Simple Black-box Adversarial Attacks (2019ICML)

文章目录 1 概述1.1 要点1.2 代码1.3 引用 2 背景2.1 目标与非目标攻击2.2 最小化损失2.3 白盒威胁模型2.4 黑盒威胁模型 3 简单黑盒攻击3.1 算法3.2 Cartesian基3.3 离散余弦基3.4 一般基3.5 学习率 ϵ \epsilon ϵ3.6 预算 1 概述 1.1 要点 题目&#xff1a;简单黑盒对抗攻…...

41 个下载免费 3D 模型的最佳网站

推荐&#xff1a;使用 NSDT场景编辑器 快速搭建3D应用场景 1. Pikbest Pikbest是一个设计资源平台&#xff0c;提供超过3万件创意艺术品。您可以在Pikbest上找到设计模板&#xff0c;演示幻灯片&#xff0c;视频和音乐等。您可以找到不同的3D模型&#xff0c;例如婚礼装饰&…...

调用支付宝接口响应40004 SYSTEM_ERROR问题排查

在对接支付宝API的时候&#xff0c;遇到了一些问题&#xff0c;记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...

React Native 导航系统实战(React Navigation)

导航系统实战&#xff08;React Navigation&#xff09; React Navigation 是 React Native 应用中最常用的导航库之一&#xff0c;它提供了多种导航模式&#xff0c;如堆栈导航&#xff08;Stack Navigator&#xff09;、标签导航&#xff08;Tab Navigator&#xff09;和抽屉…...

云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地

借阿里云中企出海大会的东风&#xff0c;以**「云启出海&#xff0c;智联未来&#xff5c;打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办&#xff0c;现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...

多场景 OkHttpClient 管理器 - Android 网络通信解决方案

下面是一个完整的 Android 实现&#xff0c;展示如何创建和管理多个 OkHttpClient 实例&#xff0c;分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...

pam_env.so模块配置解析

在PAM&#xff08;Pluggable Authentication Modules&#xff09;配置中&#xff0c; /etc/pam.d/su 文件相关配置含义如下&#xff1a; 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块&#xff0c;负责验证用户身份&am…...

安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)

船舶制造装配管理现状&#xff1a;装配工作依赖人工经验&#xff0c;装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书&#xff0c;但在实际执行中&#xff0c;工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...

C#学习第29天:表达式树(Expression Trees)

目录 什么是表达式树&#xff1f; 核心概念 1.表达式树的构建 2. 表达式树与Lambda表达式 3.解析和访问表达式树 4.动态条件查询 表达式树的优势 1.动态构建查询 2.LINQ 提供程序支持&#xff1a; 3.性能优化 4.元数据处理 5.代码转换和重写 适用场景 代码复杂性…...

Windows安装Miniconda

一、下载 https://www.anaconda.com/download/success 二、安装 三、配置镜像源 Anaconda/Miniconda pip 配置清华镜像源_anaconda配置清华源-CSDN博客 四、常用操作命令 Anaconda/Miniconda 基本操作命令_miniconda创建环境命令-CSDN博客...

作为测试我们应该关注redis哪些方面

1、功能测试 数据结构操作&#xff1a;验证字符串、列表、哈希、集合和有序的基本操作是否正确 持久化&#xff1a;测试aof和aof持久化机制&#xff0c;确保数据在开启后正确恢复。 事务&#xff1a;检查事务的原子性和回滚机制。 发布订阅&#xff1a;确保消息正确传递。 2、性…...

Xela矩阵三轴触觉传感器的工作原理解析与应用场景

Xela矩阵三轴触觉传感器通过先进技术模拟人类触觉感知&#xff0c;帮助设备实现精确的力测量与位移监测。其核心功能基于磁性三维力测量与空间位移测量&#xff0c;能够捕捉多维触觉信息。该传感器的设计不仅提升了触觉感知的精度&#xff0c;还为机器人、医疗设备和制造业的智…...