本题来自《剑指offer》 大数的存储

题目:

  针对以下问题:大数的存储。大数的相加。大数的运算。

思路:

  当数据较大时候,long long数据已经存储不了,借助数组的方式进行存储。

  假设数据的长度等于数组的长度+1(因为数组的最后一位是'\0')nLength;isOverFlow是判断是否溢出,takeOver是进位标志符,默认是0。

  从数组的后面向前遍历,即数据的加减从个位开始计算起。

    对当前位进行计算,要加上进位符。

    如果检测到是个位,便数据自增。

    如果检测到数据大于或者等于10,将进位符改为1,并且将10减去,存储当前的值。否则直接存储当前的值。

Code:

  本代码没有测试,提供一个自增程序的思路。

bool Incement(char* number){
  bool isOverFlow = false; //溢出标志符
  int takeOver = 0; //进位符
  int nLength = strlen(number); //数组的长度
  for (int i=nLength;i>=0;i--){ //从个位开始遍历
    int nsum = number[i]-'0'+takeOver; //循环刚开始进来就计算当前的值,要加上进位符
    if (i == nLength-1){            //如果检测到是个位,便自增
      nsum ++;
    }
    if (nsum >= 10){               //如果个位检测到大于等于10,存储当前的值需要减去10
      if (i==0){
        isOverFlow = true;         //检测到是溢出了
      }else{
        nsum -= 10;
        takeOver = 1;            //设置进位符
        number[i] = '0' + nsum;
      }
    }else{
      number[i] = '0' + nsum;
      break;
    }
  }
  return isOverFlow;
}

《剑指offer》 大数递增的更多相关文章

  1. 《剑指offer》-递增数组中找到和为S的(最小)两个元素

    题目描述 输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的. 输出描述: 对应每个测试案例,输出两个数,小的先输出. 首先 ...

  2. 剑指offer编程题Java实现——面试题12相关题大数的加法、减法、乘法问题的实现

    用字符串或者数组表示大数是一种很简单有效的表示方式.在打印1到最大的n为数的问题上采用的是使用数组表示大数的方式.在相关题实现任意两个整数的加法.减法.乘法的实现中,采用字符串对大数进行表示,不过在具 ...

  3. 《剑指offer》面试题12:打印1到最大的n位数

    面试题12:打印1到最大的n位数 剑指offer题目12,题目如下 输入数字n,按顺序打印出1到最大的n位十进制数,比如输入3,则打印出1,2,3一直到最大的三位数999 方法一 和面试题11< ...

  4. [读]剑指offer

    研二的开始找工作了,首先祝愿他们都能够找到自己满意的工作.看着他们的身影,自问明年自己这个时候是否可以从容面对呢?心虚不已,赶紧从老严那儿讨来一本<剑指offer>.在此顺便将自己做题所想 ...

  5. 剑指offer面试题-Java版-持续更新

    最近在用Java刷剑指offer(第二版)的面试题.书中原题的代码采用C++编写,有些题的初衷是为了考察C++的指针.模板等特性,这些题使用Java编写有些不合适.但多数题还是考察通用的算法.数据结构 ...

  6. 剑指offer题目java实现

    Problem2:实现Singleton模式 题目描述:设计一个类,我们只能生成该类的一个实例 package Problem2; public class SingletonClass { /* * ...

  7. 《剑指offer 第二版》题解

    剑指Offer 按题号排序 面试题 3:数组中重复的数字 面试题 4:二维数组中的查找 面试题 5:替换空格 面试题 6:从头到尾打印链表 面试题 7:重建二叉树 面试题 8:二叉树的下一个节点 面试 ...

  8. LeetCode:“剑指 Offer”

    LeetCode:"剑指 Offer" 刷题小菜鸡,花了几天时间做了一遍 LeetCode 上给出的 "剑指 Offer" 在此做一下记录 LeetCode主页 ...

  9. 《剑指offer》面试题11: 数值的整数次方

    面试题11: 数值的整数次方 剑指offer面试题11,题目如下 实现函数double power(double base,int exponent),求base的exponent次方, 不得使用库 ...

随机推荐

  1. python中时间的转换和使用datetime

    模块 一个完整大型的python程序是由模块和包的形式组织起来的,可见模块在python中的重要性.模块是一种组织型式,它许多有关联(关系)的代码组织放到单独的独立文件中.简单的说,可以把模块理解为一 ...

  2. C#获取客户端IP地址

    客户端ip:Request.ServerVariables.Get("Remote_Addr").ToString();客户端主机名:Request.ServerVariables ...

  3. python - one day

    1. python历史. 2008 年出现 python 2.7 与 python 3.0 两个版本,后来 吉多·范罗苏姆 大叔决定停用 python 2.7,但因用户反对,于是决定于 2020 年停 ...

  4. JAVA进阶1

    间歇性混吃等死,持续性踌躇满志系列-------------第1天 1.冒泡排序法 import java.util.Arrays; public class SumNum{ public stati ...

  5. python(十一)面向切面编程AOP和装饰器

    二.装饰器 装饰器可以在给函数修改功能的同时并不改变这个函数本身.(以下用的都是python2.7) 首先,在python里面函数是对象,在下面的函数里"fun"是函数也是对象可以 ...

  6. 51nod1693 水群 最短路

    若A=K*B,若仅通过操作二:将B变换为A需要K步, 由算数基本定理可知:k=p1*p2*……pn(p为素数,且可能重复) 那么:将B转化为p1*B需要p1步,将p1*B转化为p1*p2*B需要p2步 ...

  7. 一言难尽的js变量提升

    基础知识  在这个课题开始之前我们先做一些基础知识的讲解 1.在顶级的区域内声明的变量为 window级别的变量. 也就是说var a=100 等价于 window.a=100; 2.局部的重新声明变 ...

  8. Python-eval()函数

    python eval() eval(expression, globals= None, locals= None) --官方文档中的解释: 将字符串str当成有效的表达式子来求值并返回计算结果. ...

  9. unigui 在单据中,某输入为必填项的 JS代码

     给大家分享下在单据中,某输入为必填项,用红框标示的简单处理方法:UniSession.AddJS(UniEdit1.JSName+ '.el.setStyle({"border" ...

  10. vue2.x + vux采坑总结(一)

    1.<tab-bar> 切换时,iocn高亮跟着切换问题 vux的Tabbar组件是用来实现底部tab栏,详情见官网文档 , 实现实例截图: 代码如下,控制高亮的是代码凸显部分:selec ...