• 《剑指offer》 大数递增


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

    题目:

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

    思路:

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

      假设数据的长度等于数组的长度+1(因为数组的最后一位是'')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;
    }
  • 相关阅读:
    C++ | 变量缩写
    C++_数据类型和操作
    Python_pandas处理数据格式和统计频次
    C++_分离编译与Cmake
    C++_输入和输出示例
    C++字符串分割
    Pytorch_yoloV5预测数据非结构数据结构化
    Pytorch_模型部署和推断
    mysql触发器
    【分布式ID】雪花、TDDLSEQUENCE、UUID
  • 原文地址:https://www.cnblogs.com/missidiot/p/10774524.html
Copyright © 2020-2023  润新知