高精度加法[大整数运算]

news2024/10/6 16:23:49

这里只有大整数运算,浮点数相对来说很少使用到

前言

如果使用C++内置的类型来存储大整数(位数有几万位),是会溢出的,得不到正确的值,即使是long long int类型的范围也只是[-9*10^19,9*10^19](无符号是[0,10^20]),所能存储的最大数字也就20位,所以需要高精度算法,高精度加法具体实现是模拟人对两个数相加的过程,个位加个位,十位加十位,百位加百位,满十要进位......

 存放数字

既然没有类型可以直接存储大整数,该如何输入?我们可以使用字符串来存储我们输入的数字,字符串的长度是几,那么位数就是几,可是使用字符串不好直接相加,当我们输完还得将他赋值到vector<int>数组中,vector是一个能够存放任意类型的动态数组,push_back(参数)是往动态数组的末尾添加参数

存放时,按照人的思维,数组下标为0的位置应该存储数字的最高位,例如123456789,A[0]==1

可是当需要进位的时候,就必须把这8位向右移一位,再在A[0]放进位的数字,这样非常麻烦,所以在数组中下标为0的地方存储的是大整数的最低位,以此类推

代码 

好,现在来个例子

        123456

      +  12345 

  -----------------

 具体的我就不多讲解了,当然不是因为我不会讲,而是自己动手验证更有意义

#include <iostream>
#include <vector>
using namespace std;

vector <int> add(vector<int>& A, vector<int >& B)
{
	vector<int> C;
	int t = 0; //上一位的进位
	for (int i = 0; i < A.size() || i < B.size(); i++)
	{
		if (i<A.size())	t += A[i]; //位上有数字
		if (i<B.size())	t += B[i];

		C.push_back ( t % 10); //10的余数
		t /= 10; //进位
	}
	if(t) //如果加完了还有余数
		C.push_back(t); //或者可以换成C.push_back(1),因为不可能是2

	return C;
}


int main(void)
{
	string a, b;

	vector <int> A, B;

	cin >> a >> b; // 123456	12345

	for (int i = a.size() - 1; i >= 0; i--)	A.push_back(a[i] - '0');// A 6 5 4 3 2 1
	for (int i = b.size() - 1; i >= 0; i--)	B.push_back(b[i] - '0');// B 5 4 3 2 1

	// auto 编译器自动推断变量的类型是什么
	auto C = add(A, B); //1 0 8 5 3 1

	for (int i = C.size() - 1; i >= 0; i--)
	{
		printf("%d", C[i]);
	}

	return 0;
}

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

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

相关文章

人脸签到系统 pyQT+数据库+深度学习

一、简介 人脸签到系统是一种基于人脸识别技术的自动签到和认证系统。它利用计算机视觉和深度学习算法来检测、识别和验证个体的面部特征&#xff0c;以确定其身份并记录其出现的时间。这个系统通常用于各种场景&#xff0c;包括企业、学校、会议、活动和公共交通等&#xff0c…

海格里斯HEGERLS托盘式四向穿梭车系统核心技术有哪些?

四向穿梭车立体仓库是常见的自动化立体库解决方案&#xff0c;可以应用在不规则、异型、长宽比较大或者少品种大批量、多品种大批量的仓库。其核心设备四向穿梭车克服了环形穿梭车的缺点&#xff0c;具有很高的灵活性和柔性。对于大型的立体库系统&#xff0c;四向穿梭车具有很…

2023最新计算机大数据毕业设计选题推荐100例

文章目录 0 前言1 如何选题1.1 选题技巧&#xff1a;如何避坑(重中之重)1.2 为什么这么说呢&#xff1f;1.3 难度把控1.4 题目名称1.5 最后 2 大数据 - 选题推荐2.1 大数据挖掘类2.2 大数据处理、云计算、区块链 毕设选题2.3 大数据安全类2.4 python大数据 游戏设计、动画设计类…

人工智能基础-趋势-架构

在过去的几周里&#xff0c;我花了一些时间来了解生成式人工智能基础设施的前景。在这篇文章中&#xff0c;我的目标是清晰概述关键组成部分、新兴趋势&#xff0c;并重点介绍推动创新的早期行业参与者。我将解释基础模型、计算、框架、计算、编排和矢量数据库、微调、标签、合…

HTTPS原理(证书验证+数据传输)

HTTPS协议相关的概念有SSL、非对称加密、CA证书等 为什么用了HTTPS就是安全的&#xff1f;HTTPS底层原理如何实现&#xff1f;用了HTTPS就一定安全吗&#xff1f; HTTPS实现原理 HTTPS在内容传输上的加密使用的是对称加密&#xff0c;证书验证阶段使用非对称加密 中间人攻…

无涯教程-JavaScript - INTRATE函数

描述 INTRATE函数返回完全投资证券的利率。 语法 INTRATE (settlement, maturity, investment, redemption, [basis])争论 Argument描述Required/OptionalSettlement 证券的结算日期。 证券结算日期是指在发行日期之后将证券交易给买方的日期。 RequiredMaturity 证券的到期…

innovus:如何设置clock cell list(icg logic_cells buffer inverter)

我正在「拾陆楼」和朋友们讨论有趣的话题&#xff0c;你⼀起来吧&#xff1f; 拾陆楼知识星球入口 set_ccopt_property inverter_cells [list CKINV*LVT] set_ccopt_property buffer_cells [list CKBUF*LVT] set_ccopt_property clock_gating_cells [list CLKNQ*LVT set_cc…

数据结构与算法(一)数组的相关概念和底层java实现

一、前言 从今天开始&#xff0c;笔者也开始从0学习数据结构和算法&#xff0c;但是因为这次学习比较捉急&#xff0c;所以记录的内容并不会过于详细&#xff0c;会从基础和底层代码实现以及力扣相关题目去写相关的文章&#xff0c;对于详细的概念并不会过多讲解 二、数组基础…

数字化互联网数字孪生:重塑未来的创新思维

数字孪生是当今数字化互联网时代的一个引人注目的概念&#xff0c;它正在改变着各个行业的方式和节奏。数字孪生不仅是一种技术&#xff0c;更是一种思维方式。 数字化互联网的崛起 数字化互联网正在以前所未有的速度和规模改变着我们的生活和工作方式。从智能手机到物联网设备…

按图搜索淘宝商品(拍立淘)API接口 搜爆款商品 图片搜索功能api 调用示例

接口名称&#xff1a;item_search_img 公共参数 请求地址: 测试item_search_img 名称类型必须描述keyString是调用key&#xff08;必须以GET方式拼接在URL中&#xff09;secretString是调用密钥api_nameString是API接口名称&#xff08;包括在请求地址中&#xff09;[item_s…

品牌为什么要做价格管控

价格管控的目的其实是为了治理低价&#xff0c;低价的存在会使渠道变得不可控&#xff0c;比如经销商低价跟价&#xff0c;消费者因为低价而转投其他品牌&#xff0c;这些无形中都会影响品牌的销量&#xff0c;阻碍品牌发展&#xff0c;所以做价格管控&#xff0c;就是在做好低…

智慧公厕助推城市管理智能化和治理精细化

随着城市化进程的不断加快&#xff0c;城市管理面临着诸多挑战和问题。而智慧公厕作为城市数字化赋能的重要一环&#xff0c;正成为推动城市管理智能化和治理精细化的关键力量。本文将以智慧公厕头部厂家广州中期科技有限公司&#xff0c;所实施大量精品案例项目的实景实图&…

(源码版)2023全国大学生数学建模竞赛E题黄河水沙监测数据分析详解+Python代码源码SARIMA模型

前言 比赛结束了不知道大家情况如何&#xff0c;就我个人而言的话&#xff0c;由于工作任务比较繁重仅完成了对D题和E题的思路解答和建模&#xff0c;还是比较遗憾的。一个人要完成多题的建模和分析确实不是一件容易的事情&#xff0c;当然我向大家做出承诺历年的建模比赛我都…

修改el-card的header的背景颜色

修改el-card的header的背景颜色 1.修改默认样式 好处是当前页面的所有的el-card都会变化 页面卡片&#xff1a; <el-card class"box-card" ><div slot"header" class"clearfix"><span>卡片名称</span><el-button s…

华为数通方向HCIP-DataCom H12-821题库(单选题:341-360)

第341题 在BGP中代表对等体之间已经建立连接的状态是以下哪一种? A、Active B、Connect C、Established D、Open 答案:C 第342题 以下关于路由选择工具的描述,错误的是哪一项? A、访问控制列表用于匹配路由信息或者数据包的地址,过滤不符合条件的路由信息或数据包 …

构造函数注入指定bean名称

配置类 Configuration public class ThreadPoolTaskExecutorConfig {Beanpublic ThreadPoolTaskScheduler syncScheduler() {ThreadPoolTaskScheduler syncScheduler new ThreadPoolTaskScheduler();syncScheduler.setPoolSize(10);syncScheduler.setThreadGroupName("s…

企业网络革命:连接和访问的智慧选项

近年来&#xff0c;企业网络通信需求可谓五花八门&#xff0c;变幻莫测。它不仅为企业的生产、办公、研发、销售提供全面赋能&#xff0c;同时也让企业业务规模变大成为了可能。今天&#xff0c;我们来聊聊广域网中两个不可忽视的概念&#xff1a;连接&#xff08;Connection&a…

SSTables和LSM-Tree

SSTables 可以类比Kafka&#xff1a;将数据按键排序写入磁盘&#xff0c;并分为多个段&#xff0c;组织段的稀疏索引&#xff0c;并定期合并段文件&#xff08;kafka因为不存在重复数据&#xff0c;所以不需要合并&#xff09; LSM-Tree是基于SSTables的&#xff1a;在内存中维…

vector的clear能清除其内存吗

在C中&#xff0c;std::vector的clear函数会移除向量中的所有元素&#xff0c;使得它的大小变为0。 然而&#xff0c;clear函数并不会立即释放向量所占用的内存。向量仍然会保留其已分配的内存&#xff0c;以备后续添加元素时使用。 如果你想要立即释放内存&#xff0c;可以考虑…

高忆管理:一夜10%!特斯拉大涨,不靠车

美东时刻周一&#xff0c;美股三大指数全线收涨&#xff0c;科技权重股团体体现亮眼&#xff0c;成为推进美股走强的首要动力。电动车龙头特斯拉因受到华尔街大行看好其AI开展&#xff0c;股价大涨10%&#xff0c;市值一夜添加796亿美元&#xff08;约合人民币5802亿元&#xf…