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

大数加法C++实现

题目:假设输入是2个数字,可能超过long long类型能表示的范围,请输出两数相加的运算结果。

思路:2个数输入的时候,肯定都是用string存的,先将短的数在末尾补0,使得二者一样长。然后挨个位相加,并设置一个标志位专门用来存溢出(即进位)情况。
代码如下:

#include <stdio.h>
#include <string>using namespace std;static void compasent0(std::string& inputStr1, std::string& inputStr2)
{if (inputStr1.size() < inputStr2.size()){int diff = inputStr2.size() - inputStr1.size();string prefix(diff, '0');inputStr1 = prefix + inputStr1;}else{{int diff = inputStr1.size() - inputStr2.size();string prefix(diff, '0');inputStr2 = prefix + inputStr2;}}
}static bool checkStrValid(const std::string inputStr)
{for(const char& ch : inputStr){if ((ch < '0') || (ch > '9')){return false;}}return true;
}static std::string BigNumAdd(std::string inputStr1, std::string inputStr2)
{if (!checkStrValid(inputStr1) || !checkStrValid(inputStr2)){printf("ERROR, invalid input!\n");return "ERROR";}compasent0(inputStr1, inputStr2);printf("line[%u], inputStr1[%s], inputStr2[%s]\n", __LINE__, inputStr1.c_str(), inputStr2.c_str());std::string out(inputStr1.size(), '0');int tempSum = 0;int overflow = 0;for (int i = inputStr1.size() - 1; i > -1; --i){tempSum = (int)(inputStr1[i] - '0') + (int)(inputStr2[i] - '0') + overflow;if (tempSum < 10){out[i] = (char)(tempSum + '0');overflow = 0;}else{out[i] = (char)(tempSum % 10 + '0');overflow = 1;}}if (overflow){out = to_string(overflow) + out;}return out;
}int main()
{std::string inputStr1 = "1906";std::string inputStr2 = "456";std::string outputStr = BigNumAdd(inputStr1, inputStr2);printf("outputStr[%s]\n", outputStr.c_str());inputStr1 = "99999999999999999999";inputStr2 = "1";outputStr = BigNumAdd(inputStr1, inputStr2);printf("outputStr[%s]\n", outputStr.c_str());return 0;
}

输出是:

./a.out
line[45], inputStr1[1906], inputStr2[0456]
outputStr[2362]
line[45], inputStr1[99999999999999999999], inputStr2[00000000000000000001]
outputStr[100000000000000000000]

相关文章:

大数加法C++实现

题目&#xff1a;假设输入是2个数字&#xff0c;可能超过long long类型能表示的范围&#xff0c;请输出两数相加的运算结果。 思路&#xff1a;2个数输入的时候&#xff0c;肯定都是用string存的&#xff0c;先将短的数在末尾补0&#xff0c;使得二者一样长。然后挨个位相加&am…...

如何使用CHAT-AI?

伴随着CHAT-GPT的出现&#xff0c;人们都喜欢上了CHAT-AI。嗯&#xff1f;你还不会用&#xff1f;&#xff01; 教程来喽&#xff01; 首先点这里的 … 点击扩展 接着选择“管理扩展” 点击之后搜索“wetab” 最后你需要注册一个号&#xff0c;然后就可以使用CHAT-AI啦&#x…...

文献速递:基于SAM的医学图像分割--SAMUS:适应临床友好型和泛化的超声图像分割的Segment Anything模型

Title 题目 SAMUS: Adapting Segment Anything Model for Clinically-Friendly and Generalizable Ultrasound Image Segmentation SAMUS&#xff1a;适应临床友好型和泛化的超声图像分割的Segment Anything模型 01 文献速递介绍 医学图像分割是一项关键技术&#xff0c;用…...

23届嵌入式被裁,有什么好的就业建议?

最近看到了一个提问&#xff0c;原话如下&#xff1a; 本人23届毕业生&#xff0c;就业方向嵌入式软件&#xff0c;坐标深圳&#xff0c;工作3月公司裁员&#xff0c;目前接近12月开始找工作。 boss上投递简历&#xff0c;校招岗&#xff0c;比较有规模的好公司基本已读不回&am…...

你的 Python 代码需要解释一下了!

Python 是一种相对简单的编程语言。它主要以解释型语言著称&#xff0c;这意味着每行代码都要通过解释器逐行执行。不过在某些时候&#xff0c;将 Python 代码翻译成计算机可以理解的内容&#xff0c;然后再逐行执行&#xff0c;可以减少繁琐。 在这种情况下&#xff0c;编译器…...

听说,抖音小店要废除新手期了?没错!大动作来了!

大家好&#xff0c;我是电商小布。 一个项目从它的推出&#xff0c;到发展&#xff0c;再到成为行业的头部&#xff0c;都是需要不断进行完善的。 抖音小店这个项目也是一样。 这不&#xff0c;抖店平台在前两天又推出了新的通知&#xff0c;宣布废止新手期商家规范。 也就…...

【Java程序设计】【C00351】基于Springboot的疫情居家办公系统(有论文)

基于Springboot的疫情居家办公系统&#xff08;有论文&#xff09; 项目简介项目获取开发环境项目技术运行截图 项目简介 项目获取 &#x1f345;文末点击卡片获取源码&#x1f345; 开发环境 运行环境&#xff1a;推荐jdk1.8&#xff1b; 开发工具&#xff1a;eclipse以及i…...

HarmonyOS鸿蒙开发组件状态管理详细说明

组件状态管理 一、State State用于装饰当前组件的状态变量&#xff0c;State装饰的变量在发生变化时&#xff0c;会驱动当前组件的视图刷新&#xff0c;语法如下&#xff1a; State count:number 1; 需要注意的是&#xff1a;State装饰的变量必须进行本地初始化。 允许装…...

【剑指offer】顺时针打印矩阵

题目链接 acwing leetcode 题目描述 输入一个矩阵&#xff0c;按照从外向里以顺时针的顺序依次打印出每一个数字。 数据范围矩阵中元素数量 [0,400]。 输入&#xff1a; [ [1, 2, 3, 4], [5, 6, 7, 8], [9,10,11,12] ] 输出&#xff1a;[1,2,3,4,8,12,11,10,9,5,6,7] 解题 …...

推特社交机器人分类

机器人有不同的种类。 cresci-17数据集中的三种不同的机器人类:传统垃圾机器人、社交垃圾机器人和假追随者。 传统的垃圾邮件机器人会生成大量推广产品的内容&#xff0c;并且可以通过频繁使用的形容词来检测; 社交垃圾邮件倾向于攻击或支持政治候选人&#xff0c;因此情绪是一…...

openGauss增量备份恢复

openGauss 增量备份恢复 openGauss 数据库自 2020 年 6 月 30 日发布以来&#xff0c;很多小伙伴都提到“openGauss 数据库是否有增量备份工具&#xff1f;“这么一个问题。 在 openGauss 1.0.0 版本的时候&#xff0c;关于这个问题的回答往往是&#xff1a;“Sorry…”&…...

Idea与DataGrip各版本通用破解码,无需脚本。

直接输入即可。若失效&#xff0c;访问网址http://idea521.com/即可获取新的破解码。亲测好用。 Idea与DataGrip是一个公司的产品&#xff0c;这里的破解码可通用。 破解码一&#xff1a; 375XQD8EO2-eyJsaWNlbnNlSWQiOiIzNzVYUUQ4RU8yIiwibGljZW5zZWVOYW1lIjoi5YWo5a625qG2IHd…...

C++作业day6

编程1&#xff1a; 封装一个动物的基类&#xff0c;类中有私有成员&#xff1a;姓名&#xff0c;颜色&#xff0c;指针成员年纪 再封装一个狗这样类&#xff0c;共有继承于动物类&#xff0c;自己拓展的私有成员有&#xff1a;指针成员&#xff1a;腿的个数&#xff08;整型 …...

mysql的单表、多表查询和数据类型

一、MySQL数据库表操作 MySQL表的基本概念 在windows中有个程序叫做excel. 而Excel文件中存在了如sheet1、sheet2、sheet3的表, 所有的sheet都存储在这个Excel文件中, 在某个sheet中有相应的数据. 回到数据库和表的关系上来说, 这个Excel文件就是一个数据库, 所有的sheet就是…...

中间件-消息队列

消息队列基础知识 什么是消息队列 本处提到的消息队列是指各个服务以及系统组件/模块之间的通信&#xff0c;属于一种中间件。参与消息传递的双方称为生产者和消费者&#xff0c;生产者负责发送消息&#xff0c;消费者负责处理消息。 消息队列作用 通过异步处理&#xff0…...

一文get,最容易碰上的接口自动化测试问题汇总

本篇文章分享几个接口自动化用例编写过程遇到的问题总结&#xff0c;希望能对初次探索接口自动化测试的小伙伴们解决问题上提供一小部分思路。 sql语句内容出现错误 空格&#xff1a;由于有些字段判断是变量&#xff0c;需要将sql拼接起来&#xff0c;但是在拼接字符串时没有…...

Oracle:ORA-01830错误-更改数据库时间格式

1,先把报错SQL语句拿出来执行&#xff0c;看看是不是报的这个错 ORA-01830: 日期格式图片在转换整个输入字符串之前结束 2&#xff0c;然后查看默认日期格式是不是“YYYY-MM-DD HH24:MI:SS”&#xff08;正确格式&#xff09;。&#xff1b; 执行&#xff1a; SELECT * FRO…...

树状数组及应用

目录 1.树状数组的概念与基本编码 1.1.引导 1.2.lowbit(x) 1.3.树状数组的编码 2.树状数组的基本应用 2.1.单点修改&#xff0b;区间查询 2.2.区间修改单点查询 例题&#xff1a; 2.3.区间修改&#xff0b;区间查询 例题&#xff1a; 如果数列A是静态不变的&#xff…...

HarmonyOS 应用开发案例

本帖下方集中了HarmonyOS Next应用开发时&#xff0c;会遇到的常见应用案例。后续会持续更新大量案例&#xff0c;帮助开发者快速学习。欢迎感兴趣的同学加入Q&#xff1a;454901491 72.手写绘制及保存图片案例&#xff08;0319更新&#xff09;&#xff08;点此查看源码实现&…...

【C++ leetcode】双指针(专题完结)

15. 三数之和 题目 给你一个整数数组 nums &#xff0c;判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k &#xff0c;同时还满足 nums[i] nums[j] nums[k] 0 。请 你返回所有和为 0 且不重复的三元组。 注意&#xff1a;答案中不可以包含重复的…...

java_网络服务相关_gateway_nacos_feign区别联系

1. spring-cloud-starter-gateway 作用&#xff1a;作为微服务架构的网关&#xff0c;统一入口&#xff0c;处理所有外部请求。 核心能力&#xff1a; 路由转发&#xff08;基于路径、服务名等&#xff09;过滤器&#xff08;鉴权、限流、日志、Header 处理&#xff09;支持负…...

MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例

一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...

【第二十一章 SDIO接口(SDIO)】

第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...

JVM垃圾回收机制全解析

Java虚拟机&#xff08;JVM&#xff09;中的垃圾收集器&#xff08;Garbage Collector&#xff0c;简称GC&#xff09;是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象&#xff0c;从而释放内存空间&#xff0c;避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...

如何在看板中有效管理突发紧急任务

在看板中有效管理突发紧急任务需要&#xff1a;设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP&#xff08;Work-in-Progress&#xff09;弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中&#xff0c;设立专门的紧急任务通道尤为重要&#xff0c;这能…...

HBuilderX安装(uni-app和小程序开发)

下载HBuilderX 访问官方网站&#xff1a;https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本&#xff1a; Windows版&#xff08;推荐下载标准版&#xff09; Windows系统安装步骤 运行安装程序&#xff1a; 双击下载的.exe安装文件 如果出现安全提示&…...

Psychopy音频的使用

Psychopy音频的使用 本文主要解决以下问题&#xff1a; 指定音频引擎与设备&#xff1b;播放音频文件 本文所使用的环境&#xff1a; Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...

蓝桥杯 冶炼金属

原题目链接 &#x1f527; 冶炼金属转换率推测题解 &#x1f4dc; 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V&#xff0c;是一个正整数&#xff0c;表示每 V V V 个普通金属 O O O 可以冶炼出 …...

管理学院权限管理系统开发总结

文章目录 &#x1f393; 管理学院权限管理系统开发总结 - 现代化Web应用实践之路&#x1f4dd; 项目概述&#x1f3d7;️ 技术架构设计后端技术栈前端技术栈 &#x1f4a1; 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 &#x1f5c4;️ 数据库设…...

嵌入式学习笔记DAY33(网络编程——TCP)

一、网络架构 C/S &#xff08;client/server 客户端/服务器&#xff09;&#xff1a;由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序&#xff0c;负责提供用户界面和交互逻辑 &#xff0c;接收用户输入&#xff0c;向服务器发送请求&#xff0c;并展示服务…...