当前位置: 首页 > 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;例如婚礼装饰&…...

如何在Windows上轻松安装APK文件:告别模拟器的完整指南

如何在Windows上轻松安装APK文件&#xff1a;告别模拟器的完整指南 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 你是否曾经想要在Windows电脑上直接运行Android应用…...

Ubuntu 18.04下ISE 14.7与Vivado 2018.2的避坑安装与深度配置指南

1. 环境准备与依赖安装 在Ubuntu 18.04上安装ISE 14.7和Vivado 2018.2之前&#xff0c;系统环境配置是决定成败的关键。我遇到过不少开发者因为跳过这个步骤&#xff0c;导致后续安装过程频繁报错。这里分享几个必须检查的要点&#xff1a; 首先确认系统架构&#xff0c;虽然…...

不止于配置:深入理解AVL Cruise与Matlab Simulink联合仿真的DLL机制

不止于配置&#xff1a;深入理解AVL Cruise与Matlab Simulink联合仿真的DLL机制 在汽车工程仿真领域&#xff0c;AVL Cruise与Matlab Simulink的联合仿真已成为动力系统开发的标准工具链。大多数教程停留在环境配置层面&#xff0c;而真正影响仿真效率与可靠性的&#xff0c;往…...

IMU数据处理(卡尔曼滤波+四元数计算欧拉角一条龙服务)

先给你最终标准答案&#xff08;直接照做就行&#xff09; 结论 必须&#xff1a;寄存器读出来的原始16位 raw 数据 → 先卡尔曼/均值滤波 → 再换算单位转成 g、rad/s 为什么不能先转单位再滤波&#xff1f; 寄存器原始值是整数整型&#xff0c;噪声是均匀高斯噪声&#xff0c…...

基于Node.js与whatsapp-web.js构建WhatsApp AI聊天机器人全流程解析

1. 项目概述与核心价值最近在GitHub上看到一个挺有意思的项目&#xff0c;叫harshitethic/whatsapp-chatgpt。光看名字&#xff0c;很多朋友可能就猜到了&#xff0c;这是一个把ChatGPT的能力集成到WhatsApp里的工具。简单来说&#xff0c;就是让你能在WhatsApp里直接和AI对话&…...

Tome:基于MCP协议的无代码AI桌面助手,轻松连接本地与云端模型

1. 项目概述&#xff1a;Tome&#xff0c;一个为普通人打造的魔法AI桌面应用 如果你对大型语言模型&#xff08;LLM&#xff09;和AI助手感兴趣&#xff0c;但又觉得那些命令行工具、复杂的API配置和JSON文件让人望而却步&#xff0c;那么Tome的出现&#xff0c;可能就是为你准…...

1986-2025年上市公司高校专利知识溢出

高校专利知识溢出&#xff0c;是衡量企业所处省份外部知识环境与高校创新资源外溢程度的重要指标。对于企业尤其是技术密集型企业而言&#xff0c;其创新活动不仅依赖内部研发投入&#xff0c;也深受所在地区知识基础、科研资源和学术创新氛围的影响。高校作为基础研究和前沿技…...

用Wireshark抓包分析Powerlink协议:从数据帧看懂主站轮询与从站响应

Wireshark实战&#xff1a;深度解析Powerlink协议的主从站通信机制 工业以太网协议Powerlink凭借其确定性实时通信能力&#xff0c;在自动化控制领域占据重要地位。本文将带您通过Wireshark抓包分析&#xff0c;揭开Powerlink主站轮询与从站响应的核心机制。不同于基础配置教程…...

STM32F103C8T6驱动MAX30102:从CubeMX配置到心率可视化,一个LED灯带你看懂心跳

STM32F103C8T6驱动MAX30102&#xff1a;从硬件交互到心跳可视化实战 当你第一次看到LED灯随着自己的心跳节奏闪烁时&#xff0c;那种将生物信号转化为物理反馈的奇妙体验&#xff0c;正是嵌入式开发的魅力所在。本文将带你用STM32F103C8T6和MAX30102血氧传感器&#xff0c;打造…...

从数据焦虑到数字资产:WeChatExporter如何重塑你的微信记忆管理

从数据焦虑到数字资产&#xff1a;WeChatExporter如何重塑你的微信记忆管理 【免费下载链接】WeChatExporter 一个可以快速导出、查看你的微信聊天记录的工具 项目地址: https://gitcode.com/gh_mirrors/wec/WeChatExporter 你是否曾因手机存储空间不足而不得不删除珍贵…...