牛客网NC1大数加法

news2025/1/12 1:43:18

因为要计算的是两个很大很大的数,假设计算出来的数据大于整型的最大值,此时就会出现问题。所以要换个方法来解决问题。

我们应该以字符串的形式来读取两个正整数,并且返回二者相加的结果

我们应该从大数的个位开始,逐级的向上相加进位

下面我们来详细讲解一下大数加法的具体步骤:

1.假设两个字符串中有一个字符串为空,此时直接返回另外一个字符串

		if (s.empty())
		{
			return t;
		}
		if (t.empty())
		{
			return s;
		}

2.令更长的字符串为s,令短的字符串为t

		if (s.length() < t.length())
		{
			swap(s, t);
		}

3.先创建一个变量用来表示进位,取变量名字为carry,令它的默认值为0

		int carry = 0;

4.从后向前遍历长的字符串,并将它的每一个字符转换为数字并且加上进位,注意这里的个位不需要特殊处理,因为carry默认值是0,加上0不影响个位的结果:

		for (int i = s.length() - 1; i >= 0; i--)
		{
			int temp = s[i] - '0' + carry;

(注意这里 i 的数据类型不能是size_t,因为这样就会无限循环

5.因为两个字符串的长度可能是不同的,我们要从后向前提取短字符串的数据时,应该先要确定短字符串的下标

			int j = i - s.length() + t.length();

6.接下来我们需要对短字符串进行判断,如果短字符串此时没有处理完,就需要将短字符串当前数位上的字符转换为整型,并且与长字符串同数位上的数相加并取进位,如果相加的结果大于10还要去10

			if (j >= 0)
			{
				temp += t[j] - '0';
			}
			carry = temp / 10;
			temp = temp % 10;

7.最后我们需要对该数位上面的数进行修改:

			s[i] = temp + '0';
		}

8.结束循环以后我们需要对最后一次的进位进行处理,因为此时已经出了循环,最后一次进位没有处理

		if (carry == 1)
		{
			s = '1' + s;
		}

到这里,所有的代码就已经完成了,我们把代码整合一下:

class Solution
{
public:
	string solve(string s, string t)
	{
		if (s.empty())
		{
			return t;
		}
		if (t.empty())
		{
			return s;
		}

		if (s.length() < t.length())
		{
			swap(s, t);
		}

		int carry = 0;

		for (int i = s.length() - 1; i >= 0; i--)
		{
			int temp = s[i] - '0' + carry;
			int j = i - s.length() + t.length();
			if (j >= 0)
			{
				temp += t[j] - '0';
			}
			carry = temp / 10;
			temp = temp % 10;
			s[i] = temp + '0';
		}

		if (carry == 1)
		{
			s = '1' + s;
		}
		return s;

	}
};

我们来试着运行一下代码:

(还可以采取在短字符串前面补0的方法,这里就不做讲解了)

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

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

相关文章

海康VisionMaster使用学习笔记13-串口通信

测试工具 协议介绍 串口在VM中的使用 1. RS232信号线定义 2. RS485信号线定义 3. 创建串口连接 4. 测试VM中串口接收数据

Java Programming Examples

Java Programming Examples Example - Environment How to compile a java file? How to debug a java file? How to set classpath? java -cp java -classpathHow to view current classpath? windows C:> echo %CLASSPATH%linux echo $CLASSPATHHow to set dest…

cbsd 设置网络问题留档

cbsd创建或导入虚拟机&#xff0c;网络不通。使用bridge一直不通&#xff0c;后来是通过设立VALENAT才调通的。 cbsd里网卡设置&#xff0c;里面可以设置网络的上一级 默认是auto 这里选bridge1 试试 失败 选tap1 试试 网络还是不通&#xff0c;但是好消息&#xff0c;是能…

element 使用printJS调用打印功能

1.安装依赖 npm install print-js --save 2.在main.js中全局引用 import printJS from print-js; 3.在页面中使用 <el-button type"success" plain icon"Printer" :disabled"single" click"handlePrint">打印</el-button…

VBA技术资料MF188:将Txt文件转换成Html文件

我给VBA的定义&#xff1a;VBA是个人小型自动化处理的有效工具。利用好了&#xff0c;可以大大提高自己的工作效率&#xff0c;而且可以提高数据的准确度。“VBA语言専攻”提供的教程一共九套&#xff0c;分为初级、中级、高级三大部分&#xff0c;教程是对VBA的系统讲解&#…

03:电容的充放电特性及应用举例

1.电容的基本特性&#xff1a;电容两端的电压不能突变 2.影响电容两端电压的参数&#xff1a;整个回路中电阻&#xff0c;电容大小 3.如何计算电容的电压变化时间&#xff1f; τRC R1k C1uF 则得到τ1ms的时间 应用&#xff1a;芯片使能延时

测试一组图像生成#Mixlab的异形头

“异形头”或“物体头” 通常指的是一种艺术或设计中的概念&#xff0c;人物的头部被替换为非人体的物体或异形结构。这种设计常见于超现实主义艺术、漫画、动画和游戏中&#xff0c;旨在创造视觉冲击或传达特定的主题和情感。 shadow&#xff1a; 这个概念还蛮有意思的&#x…

作为科协T1级,为何作者纷纷吐血拔草IEEE顶刊TEC,转投TIE和TTE,它输在哪了?

IEEE顶级期刊 本期解析一本能源与发电技术领域SCI&EI&#xff0c;期刊入选中国科协T1级目录&#xff0c;但网友的发表经历却一波三折&#xff0c;大批慕名而来的作者纷纷因其审稿速度很慢而“拔草”&#xff0c;甚至建议转投其它trans类型&#xff0c;这是怎么回事呢 1、期…

2-73 基于matlab的weber能量法求解齿轮时变啮合刚度的程序

基于matlab的weber能量法求解齿轮时变啮合刚度的程序&#xff0c;能够跑出刚度图&#xff0c;通过求解轮齿部分变形、基体变形及局部接触变形这三部分的变形&#xff0c;进而求得综合弹性变形&#xff0c;最终求出时变啮合刚度。程序已调通&#xff0c;可直接运行。 2- 73 齿轮…

乡村养老服务管理系统

TOC springboot549乡村养老服务管理系统pf 绪论 1.1 研究背景 现在大家正处于互联网加的时代&#xff0c;这个时代它就是一个信息内容无比丰富&#xff0c;信息处理与管理变得越加高效的网络化的时代&#xff0c;这个时代让大家的生活不仅变得更加地便利化&#xff0c;也让…

C++竞赛初阶L1-11-第五单元-for循环(25~26课)527: T456436 [NOIP2002 普及组] 级数求和

题目内容 已知&#xff1a;Sn​121​31​…n1​。显然对于任意一个整数 k&#xff0c;当 n 足够大的时候&#xff0c;Sn​>k。 现给出一个整数 k&#xff0c;要求计算出一个最小的 n&#xff0c;使得 Sn​>k。 输入格式 一个正整数 k。 输出格式 一个正整数 n。 样…

代码随想录DAY22 - 回溯算法 - 08/21

目录 理论回顾 什么是回溯法 回溯法的效率 回溯法解决的问题 如何理解回溯 组合 题干 思路和代码 递归法 递归优化&#xff1a;剪枝 组合总和Ⅲ 题干 思路和代码 递归法 递归优化 电话号码的字母组合 题干 思路和代码 递归法 理论回顾 什么是回溯法 回溯是…

Python模块依赖注入实现依赖反转使用详解

概要 在软件开发中,依赖注入(Dependency Injection, DI)是一种实现依赖反转(Inversion of Control, IoC)的设计模式,它可以提高代码的灵活性和可测试性。通过依赖注入,模块之间的耦合度被降低,使得代码更容易扩展和维护。在Python开发中,依赖注入虽然不像某些静态类型…

mac安装xmind

文章目录 介绍软件功能下载安装1.下载完成后打开downloads 双击进行安装2.将软件拖到应用程序中3.在启动台中搜索打开4.提示损坏问题解决5.执行完成关闭命令窗口6.打开成功&#xff0c;点击继续&#xff0c;跳过登录7.打开成功后&#xff0c;点击关于 小结 介绍 XMind 是一款流…

专家翻译和本地化对中国商品推广的影响

随着中国企业不断扩大其在全球市场的影响力&#xff0c;有效推广其产品的需求从未如此重要。中国产品在海外成功推广的一个重要因素是专家翻译和本地化。这些服务不仅仅是将文本从一种语言转换为另一种语言&#xff1b;它们涉及调整产品和营销策略&#xff0c;以适应目标市场的…

提升职业竞争力,亚马逊云科技认证助你云端腾飞

在如今云计算快速发展的时代&#xff0c;获得行业领先的认证已成为提升职业竞争力的关键。作为全球最受欢迎的云服务提供商之一&#xff0c;亚马逊云科技提供了广泛的认证路径&#xff0c;帮助专业人士验证其在不同领域的技能和知识。无论你是刚刚踏入云计算领域的新手&#xf…

免费分享:2018中国光伏发电潜力长期年平均值数据(附下载方法)

Solargis&#xff0c;是GeoModel Solar公司的旗舰产品&#xff0c;由斯洛伐克技术精英Marcel Suri等人创立&#xff0c;是全球光伏领域重要的软件服务提供者。它集成了太阳辐射、光伏数据、气象及地理信息的综合数据库&#xff0c;并通过先进算法&#xff0c;为用户提供太阳能资…

联想2510彩色复印机报错CD40故障检修

你是否曾经遇到过联想2510彩色复印机报错CD40的问题,却无从下手?你是否曾经为联想2510彩色复印机CD40的故障而苦恼?别担心,吴师傅来给您提供专业的解决方案。 这篇文章主要介绍“联想2510彩色复印机CD40故障如何维修”,在日常操作中,相信很多小伙伴在联想2510彩色复印机报…

python学习(1)-- window10安装pycharm

pycharm官网&#xff1a;Download PyCharm: The Python IDE for data science and web development by JetBrains 一、安装pycharm 1.进入官网&#xff0c;选择社区版&#xff0c;点击下载。 2.下载完成后&#xff0c;打开下载的exe文件。 3.打开后出现如下界面&#xff0c;点…

宠物空气净化器怎么选?新手必看猫用除毛空气净化器热门品牌推荐

作为资深铲屎官来说&#xff0c;一到换毛季节&#xff0c;家里的猪咪经常会出现掉毛的情况&#xff0c;而且如果不勤打扫的话&#xff0c;粑粑的臭味也挺重的。如果长期不清理家里的浮毛&#xff0c;很容易就会得鼻炎。 看了身边好几个铲屎官都在用宠物空气净化器&#xff0c;…