大数相加(c++)算法

2023-11-14

有没有想过100位数加100数的数字该如何计算出结果吗?一般计算机是无法直接计算那么大的数字,这个时候我们得模拟我们手算加法的进制过程,如何用代码把它实现,这样子就能实现大数相加了,首先我很感谢汤健同学给我分享的这串代码,我写笔记的初衷是为了不断提高自己的能力,希望能与更多小伙伴一起分享有趣的算法。

下面提供代码

实例1:

实例2:

实例3:

输入两个数字,然后输出结果,代码如下:

#include<iostream>
#include<cstring> 
#include<algorithm>
using namespace std;
//主要思路:将两个数字存储入a数组和b数组中,然后从a和b的低位(相同位数)分别相加,判断是否进位 
//as,bs通过a[i]-'0'操作实现得到每个 个十百千位上的整数 
 //l为在 i-- 和j--过程中,是比较长的那一位,用于判断是否遍历到最高位的数字 (这个条件l==0) 
//k的值为0或者1,开始默认为0,比如说,上一次循环中as+bs+k>9,k就变为1,若当遍历到下一次时,
//判断情况(3种)
//(1): as+bs+k<9,k就为0,不进位,
//(2):as+bs+k>9,k就为1,进位 
//(3):as+bs+k>9,同时这个是最大位时,e++下一位直接进1,结束 
//仔细观察可以发现这三种情况结束后都有e++;当遍历到最高位时,无论是否进位,结束都有e++
//因此,结尾在输出结果时倒序输出,从e-1开始,因为前面提到了e++; 
int main()
{
string a,b;
 int i,j,s=0,k=0,e=0,l,c[9999];
 int as,bs;
 cin>>a;//输入a,b两个数相加 
 cin>>b;
 for(i=a.size()-1,j=b.size()-1;i>=0||j>=0;j--,i--)
 {
  l=max(i,j);//选取i和j中的最大长度 
  if(i>=0)
{
 as=a[i]-'0';
 }
 
 else
 {
  as=0;
 }
 if(j>=0)
 {
 bs=b[j]-'0';
 }
 else
 {
  bs=0;
 }
 if(as+bs+k>9&&l==0)// 
 {
  c[e]=as+bs+k-10;
  e++;
  c[e]=1;
  e++;
  
 
 }
 else if(as+bs+k>9)
 {
  c[e]=as+bs+k-10;
  k=1;
  e++;
 }
 else if(as+bs+k<=9)
 {
  c[e]=as+bs+k;
  k=0;
  e++;
 }
 }

 for(i=e-1;i>=0;i--)
 {
  cout<<c[i];
 }
 cout<<endl;
 
 return 0;
 }

 很感谢读者的观看,喜欢我的文章请点赞+关注+收藏

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

大数相加(c++)算法 的相关文章

随机推荐

  • UnknownHostException: api.weixin.qq.com解决方法

    在使用微信服务过程中 调用api weixin qq com 总会碰到如下这种问题 java net UnknownHostException api weixin qq com 未知的名称或服务 关键是这种问题偶尔出现 我们在测试环境甚至
  • jee中的过滤器

    对于web app的开发者来说 过滤器 是最常见不过了 在web xml中经常可以看到这样的几行
  • 【转】sed 简明教程

    awk于1977年出生 今年36岁本命年 sed比awk大2 3岁 awk就像林妹妹 sed就是宝玉哥哥了 所以 林妹妹跳了个Topless 他的哥哥sed坐不住了 也一定要出来抖一抖 sed全名叫stream editor 流编辑器 用程
  • 老生常谈-FFmpeg 的编译问题轻松搞定

    前几天发了一篇 FFmpeg 调用 Android MediaCodec 进行硬解码 关于 FFmpeg 的编译 是个老生常谈的话题了 很多初学者都会卡在怎么编译动态库 so 的问题上 这其实也是 Android 开发转音视频的一大拦路虎
  • element-ui中el-tab的的使用

    element ui中el tab的的使用 el tab在页面中当作tab页使用如下 name就是与选项卡绑定值 value 对应的标识符 表示选项卡别名 用v model绑定值 选中选项卡的 name label 设置选项卡的标题 可以动
  • Mysql的mysql_store_result/mysql_use_result,mysql_field_count/mysql_num_fields/mysql_num_rows函数区别

    Mysql的mysql store result mysql use result mysql field count mysql num fields mysql num rows函数区别 1 先参考以下文章 或者先看下面再回来理解 my
  • list.clear()与=null以及new ArrayList<E>()的差异(Map类似)

    1 使用clear 方法 List
  • linux下载命令wget命令详解

    wget是linux最常用的下载命令 一般的使用方法是 wget 空格 要下载文件的url路径 例如 wget http www linuxsense org xxxx xxx tar gz 简单说一下 c参数 这个也非常常见 可以断点续传
  • Angular自定义表单验证

    前端表单验证 为年龄输入框添加了两个验证 并分情况填写了提示语
  • Android开发 之 指纹识别

    指纹识别 在android6 0的时候谷歌对指纹识别开始支持了 现在市面的基本上指纹识别都是在api23以上的版本 涉及到一个系统服务 FingerPrintManager 在使用FingerPrintManager这个类实现的时候发现了很
  • np.meshgrid()函数

    文章目录 1 自己理解 2 官方解释 3 参数 3 1 x1 x2 xn array like 3 2 sparse bool optional 默认false 3 3 copy bool optional 1 自己理解 np meshgr
  • 用GCC开发STM32,正点原子开发板的一个库函数版本例程示例

    GCC环境搭建 首先下载交叉编译环境GCC 这个网上有很多 百度一下就能找到下载 比如 Sourcery G for ARM EABI 我的CSDN资源里 有相关下载 熟悉下Makefile 强力推荐熟悉网络牛人李云的51cto博客 有一篇
  • java 数组的长度_Java初学者:数组,得到数组长度

    得到数组的长度在java里是很简单的 那就是 数组名 length 我们来看一个简单的程序就可以了 如下 这个就是上次的那个程序 我只是把for后面那个4改成了a length 也许有人要问了 那为什么非要求出数组的长度呢 数组在起始的时候
  • Redraiment的遭遇

    描述 Redraiment的老家住在工业区 日耗电量非常大 是政府的眼中钉肉中刺 但又没办法 这里头住的可都是纳税大户呀 今年7月 又传来了不幸的消息 政府要在7 8月对该区进行拉闸限电 但迫于压力 限电制度规则不会太抠门 政府决定从7月1
  • 【CUDA】cuda安装 (windows版)

    CUDA cuda安装 windows10版 一 前言 官方教程 二 安装工具的准备 1 CUDA toolkit Download 2 cuDNN Download 三 CUDA 安装与配置过程 测试环境是否安装成功 四 cuDNN配置
  • JAVA简介

    JAVA简介 java是一种高级的面向对象的程序设计语言 使用java编写的的程序可以在任何计算机 操作系统和支持java的硬件设备上运行 什么是java java语言的发展历程 Java是于1995年由Sun公司推出的一种极富创造力的面向
  • 手撸算法-计算表达式

    牛客原题 描述 请写一个整数计算器 支持加减乘三种运算和括号 示例1 输入 1 2 返回值 3 示例2 输入 2 3 4 5 返回值 10 示例3 输入 3 2 3 4 1 返回值 26 思路 从左向右遍历字符串 1 遇到数字则入栈 注意数
  • C#Winform窗体实现服务端和客户端通信例子(TCP/IP)

    Winform窗体实现服务端和客户端通信的例子 是参考这个地址 http www cnblogs com longwu archive 2011 08 25 2153636 html 进行了一些异常处理 提示信息的补充 还有新增获取本地IP
  • 【docker】docker 实现 的基础

    1 概述 还不懂Docker 一个故事安排的明明白白
  • 大数相加(c++)算法

    有没有想过100位数加100数的数字该如何计算出结果吗 一般计算机是无法直接计算那么大的数字 这个时候我们得模拟我们手算加法的进制过程 如何用代码把它实现 这样子就能实现大数相加了 首先我很感谢汤健同学给我分享的这串代码 我写笔记的初衷是为