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

信息奥赛一本通 1168:大整数加法

这道题是一道大整数加法,涉及到高精度的算法,比如说有两个数要进行相加,111111111111111111111111111111111111111+2222222222222222222222222222222,那么如果这两个数很大的话我们常用的数据类型是不能进行计算的,那么我们就需要另一种方式来进行解决,在这里我们可以使用到字符串和数组,我们使用字符串对两个数进行存储,用数组对字符串中的每个数分开存储,那么这样就做到了每位相加,变成了个位数与个位数相加,大大降低了我们计算的难度,我们在这里可以对两个数反序存储,因为后续我们进行相加的时候就可以从低位,下标从小到大,逐位相加,方便我们的操作。在我们进行存储的过程中,我们需要注意,可能会出现前导0,那么我们减去字符0即可,这样就去除我们的前导0,那么接下来我们思考,如何实现我们两个数相加的操作,我们两个数进行相加的时候,可能会有进位的产生,那么我们这个时候对两数相加的结果进行除10,将结果先赋值给下一位结果,既然当前有进位的可能,我们就需要将当前结果进行对10取模,这样我们一次两数相加的操作就结束了,接下来我们循环对两个数组进行此操作即可,结束后我们就得到了我们相加的结果,那么我们循环的终止条件是什么呢,我们循环的终止条件就是结果数组c[]一共有几位,想知道结果一共有几位,就需要知道两个相加的数一共有几位,我们两个数相加最多不超过两个数中最大数的位数+1,我们结果的位数lc就是max(la,lb)+1,在这里我们多留一位预判相加后最高位可能会产生进位,如果没有我们再对结果进行特殊处理即可,接下来我们就需要求出la,以及我们的lb,在这里我们可以定义一个变量aIndex,他表示我们数组加到第几位了,如果我们当前遍历的数不为0,我们就更新la,这样就确定了la,lb。最后我们就需要最结果进行输出,在对结果进行输出前,我们需要对结果数组中的数进行前导0的处理,如果我们最高位是0我们就需要对我们的lc进行减减的操作,这个操作是需要借助循环进行处理的,在这里我们使用while,循环的条件就是当前最高位的数如果为0,并且我们需要保证位数>=1的前提下,对lc--,

这样我们只需要对结果数组反向循环输出即可。

接下来是举例计算过程和代码

第一步对数据进行反序存储,如果两个数为123456和111111,我们对123456进行输出看看,

我们发现确实是反序存储了,

第二步对数据进行相加

结果也没有任何问题,那么如果是有前导0的两个数呢,例如0900和0000900呢

我们发现是有很多前导0的,但是在我们对结果数组进行处理之后(红色字体),去掉了前导0,并确定了结果一共有几位之后,我们就可以正确的输出结果

以下是AC代码

#include <iostream>
#include <string>
using namespace std;
#define int long longint a[210], b[210], c[210];
//a数组 第一个数
//b数组 第二个数
//c数组 结果数组signed  main() {string s1, s2; cin >> s1 >> s2;//将字符串反序存入数组中int aIndex = 1, bIndex = 1;int la = 1, lb = 1,lc;//各个数的实际位数for (int i = s1.size() - 1; i >= 0;i--) {a[aIndex++] = s1[i] - '0';//去前导0if (s1[i] != '0') la = aIndex - 1;//当前数不是0,更新最高位}for (int i = s2.size() - 1; i >= 0; i--) {b[bIndex++] = s2[i] - '0';if (s2[i] != '0') lb = bIndex - 1;}//将结果进行相加,存入c数组中lc = max(la, lb) + 1;//多加一位,预防最高位也产生进位for (int i = 1; i <= lc;i++) {c[i] += a[i] + b[i];//需是+= 因为如果该位进行相加计算之前,该位可能有进位存储c[i + 1] = c[i] / 10;c[i] %= 10;}//去除c中的前导0,确定lcwhile (!c[lc] && lc >= 1) lc--;for (int i = lc; i >= 1;i--) {cout << c[i];}return 0;
}

相关文章:

信息奥赛一本通 1168:大整数加法

这道题是一道大整数加法&#xff0c;涉及到高精度的算法&#xff0c;比如说有两个数要进行相加&#xff0c;1111111111111111111111111111111111111112222222222222222222222222222222&#xff0c;那么如果这两个数很大的话我们常用的数据类型是不能进行计算的&#xff0c;那么…...

3.3 OpenAI GPT-4, GPT-3.5, GPT-3 模型调用:开发者指南

OpenAI GPT-4, GPT-3.5, GPT-3 模型调用:开发者指南 OpenAI 的 GPT 系列语言模型,包括 GPT-4、GPT-3.5 和 GPT-3,已经成为自然语言处理领域的标杆。无论是文本生成、对话系统,还是自动化任务,开发者都可以通过 API 调用这些强大的模型来增强他们的应用。本文将为您详细介…...

横盘出击的三种经典走势形态,买点以及需要注意的问题技术详解

龙头股在横盘整理过程中&#xff0c;也会出现几种不同的形态&#xff0c;比如矩形整理形态&#xff0c;或者在某一趋势线下方运行。 第一种形态&#xff1a;突破横盘趋势线 突破横盘趋势线时识别横盘龙头启动的关键点位。股价经过一段时间的横盘后&#xff0c;突然出现快速上…...

处理没有提示的字符串、计算相隔天数应用题

正常情况下&#xff0c;小云每天跑 1 千米。如果某天是周一或者月初&#xff08;1 日&#xff09;&#xff0c;为了激励自己&#xff0c;小云要跑 2 千米。如果同时是周一或月初&#xff0c;小云也是跑 2 千米。 小云跑步已经坚持了很长时间&#xff0c;从 1990 年 1 月 1 日周…...

【LeetCode】力扣刷题热题100道(31-35题)附源码 搜索二维矩阵 岛屿数量 腐烂的橙子 课程表 实现 Trie (前缀树)(C++)

一、搜索二维矩阵 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性&#xff1a; 每行的元素从左到右升序排列。每列的元素从上到下升序排列。 可以使用 从右上角开始搜索 的方法来有效地找到目标值。 选择起始位置&#xff1a; 从矩…...

react使用react-redux状态管理

1、安装 npm install react-redux2、创建store.js import { createStore } from redux;// 定义初始状态 const initialState {counter: 888 };// 定义 reducer 函数&#xff0c;根据 action 类型更新状态 function reducer(state initialState, action) {switch (action.ty…...

04_角色创建窗口

将上文的登录窗口隐藏 创建空节点 作为创建角色窗口 命名为CreateWnd 创建输入的名字的输入框 再创建一个按钮用来随机角色名字 创建开始游戏按钮 End....

Dockerfile -> Docker image -> Docker container

1. Dockfile -> Docker image docker build -t shuai_image -f xxx/xxx/Dockerfile . (.不能少)出现&#xff1a; [] Building xxx(10/17) > [internal] load build definition from Dockerfile > > transferring dockerfile: … > > transferring context …...

LDN的蓝牙双模键盘帮助文档

文档索引 已支持的PCB列表(仅列出少部分)&#xff1a;键盘特性硬件软件键盘以及驱动蓝牙模式USB模式 驱动功能介绍主界面键盘列表页面键盘配置&#xff08;使用双模键盘的请务必细看本说明&#xff09;功能层配置(改键)触发层配置(改FN键等触发功能)功能选择&#xff08;重要&a…...

搭建一个基于Spring Boot的驾校管理系统

搭建一个基于Spring Boot的驾校管理系统可以涵盖多个功能模块&#xff0c;例如学员管理、教练管理、课程管理、考试管理、车辆管理等。以下是一个简化的步骤指南&#xff0c;帮助你快速搭建一个基础的系统。 1. 项目初始化 使用 Spring Initializr 生成一个Spring Boot项目&am…...

运动相机拍视频过程中摔了,导致录视频打不开怎么办

3-11 在使用运动相机拍摄激烈运动的时候&#xff0c;极大的震动会有一定概率使得保存在存储卡中的视频出现打不开的情况&#xff0c;原因是存储卡和相机在极端情况下&#xff0c;可能会出现接触不良的问题&#xff0c;如果遇到这种问题&#xff0c;就不得不进行视频修复了。 本…...

MongoDB vs Redis:相似与区别

前言 在当今的数据库领域&#xff0c;MongoDB 和 Redis 都是备受关注的非关系型数据库&#xff08;NoSQL&#xff09;&#xff0c;它们各自具有独特的优势和适用场景。本文将深入探讨 MongoDB 和 Redis 的特点&#xff0c;并详细对比它们之间的相似之处和区别&#xff0c;帮助…...

数字图像处理:实验二

任务一&#xff1a; 将不同像素&#xff08;32、64和256&#xff09;的原图像放大为像素大 小为1024*1024的图像&#xff08;图像自选&#xff09; 要求&#xff1a;1&#xff09;输出一幅图&#xff0c;该图包含六幅子图&#xff0c;第一排是原图&#xff0c;第 二排是对应放大…...

基于海思soc的智能产品开发(高、中、低soc、以及和fpga的搭配)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 市场上关于图像、音频的soc其实非常多&#xff0c;这里面有高、中、低档&#xff0c;开发方式也不相同。之所以会这样&#xff0c;有价格的因素&am…...

SSM旅游信息管理系统

&#x1f345;点赞收藏关注 → 添加文档最下方联系方式可咨询本源代码、数据库&#x1f345; 本人在Java毕业设计领域有多年的经验&#xff0c;陆续会更新更多优质的Java实战项目希望你能有所收获&#xff0c;少走一些弯路。&#x1f345;关注我不迷路&#x1f345; 项目视频 …...

FastADMIN实现网站启动时执行程序的方法

FastAdmin基于ThinkPHP框架&#xff1a;ThinkPHP框架中与 Application_Start 类似的功能可以在应用初始化钩子&#xff08;Hook&#xff09;中实现。在FastAdmin项目中&#xff0c;一般在应用的 common.php 文件中定义行为&#xff08;Behavior&#xff09;来实现类似功能。 定…...

【威联通】FTP服务提示:服务器回应不可路由的地址。被动模式失败。

FTP服务器提示&#xff1a;服务器回应不可路由的地址。被动模式失败。 问题原因网络结构安全管理配置服务器配置网关![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/1500d9c0801247ec8c89db7a44907e4f.png) 问题 FTP服务器提示&#xff1a;服务器回应不可路由的地址…...

nginx常用配置 (含负载均衡、反向代理、限流、Gzip压缩、图片防盗链 等示例)

nginx的配置文件通常在 /etc/nginx/nginx.conf , /etc/nginx/conf.d/*.conf 中&#xff0c; 一般直接 改 conf.d目录下的 default.conf文件&#xff0c; 然后 先检测配置文件是否有错误 nginx -t 再重新加载配置文件 或 重启nginx&#xff0c;命令如下 nginx -s reload 或…...

21.1、网络设备安全概述

目录 网络设备安全概况——交换机、路由器安全威胁 网络设备安全概况——交换机、路由器安全威胁 第一个是MAC地址泛洪&#xff0c;MAC地址表记录着交换机拥有的MAC地址跟端口的对应关系 MAC地址表主要是三个字段&#xff0c;MAC地址对应的端口号&#xff0c;也就表示主机是连…...

通过idea创建的springmvc工程需要的配置

在创建的spring mvc工程中&#xff0c;使用idea开发之前需要配置文件包括porm.xml、web.xml、springmvc.xml 1、porm.xml 工程以来的spring库&#xff0c;主要包括spring-aop、spring-web、spring-webmvc&#xff0c;示例配置如下&#xff1a; <project xmlns"http:/…...

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...

golang循环变量捕获问题​​

在 Go 语言中&#xff0c;当在循环中启动协程&#xff08;goroutine&#xff09;时&#xff0c;如果在协程闭包中直接引用循环变量&#xff0c;可能会遇到一个常见的陷阱 - ​​循环变量捕获问题​​。让我详细解释一下&#xff1a; 问题背景 看这个代码片段&#xff1a; fo…...

Xshell远程连接Kali(默认 | 私钥)Note版

前言:xshell远程连接&#xff0c;私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...

LeetCode - 394. 字符串解码

题目 394. 字符串解码 - 力扣&#xff08;LeetCode&#xff09; 思路 使用两个栈&#xff1a;一个存储重复次数&#xff0c;一个存储字符串 遍历输入字符串&#xff1a; 数字处理&#xff1a;遇到数字时&#xff0c;累积计算重复次数左括号处理&#xff1a;保存当前状态&a…...

Opencv中的addweighted函数

一.addweighted函数作用 addweighted&#xff08;&#xff09;是OpenCV库中用于图像处理的函数&#xff0c;主要功能是将两个输入图像&#xff08;尺寸和类型相同&#xff09;按照指定的权重进行加权叠加&#xff08;图像融合&#xff09;&#xff0c;并添加一个标量值&#x…...

CentOS下的分布式内存计算Spark环境部署

一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架&#xff0c;相比 MapReduce 具有以下核心优势&#xff1a; 内存计算&#xff1a;数据可常驻内存&#xff0c;迭代计算性能提升 10-100 倍&#xff08;文档段落&#xff1a;3-79…...

深入理解JavaScript设计模式之单例模式

目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式&#xff08;Singleton Pattern&#…...

《通信之道——从微积分到 5G》读书总结

第1章 绪 论 1.1 这是一本什么样的书 通信技术&#xff0c;说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号&#xff08;调制&#xff09; 把信息从信号中抽取出来&am…...

土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等

&#x1f50d; 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术&#xff0c;可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势&#xff0c;还能有效评价重大生态工程…...

深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南

&#x1f680; C extern 关键字深度解析&#xff1a;跨文件编程的终极指南 &#x1f4c5; 更新时间&#xff1a;2025年6月5日 &#x1f3f7;️ 标签&#xff1a;C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言&#x1f525;一、extern 是什么&#xff1f;&…...