• 【基本算法--高精度计算】大整数相加


    【题目描述】

    求两个不超过200位的非负整数的和。

    【输入】

    有两行,每行是一个不超过200位的非负整数,可能有多余的前导0。

    【输出】

    一行,即相加后的结果。结果里不能有多余的前导0,即如果结果是342,那么就不能输出为0342。

    【输入样例】

    22222222222222222222
    33333333333333333333
    

    【输出样例】

    55555555555555555555

    【注意】
    1.  思路看似简单,但是很多小细节需要注意
    2. 注意相加的实现,进位和该位的值,与原先的值有关的。
    3. 还可以用另一种方法,统一相加,加了之后再统一进位。
    4. #include<iostream>
      #include<string> 
      #include<string.h> 
      using namespace std;
      void initial(int a[])
      {
          string s;
          cin >> s;
          a[0] = s.length();
          for (int i = 1; i <= a[0]; i++)
          {
              a[i] = s[a[0] - i] - '0';
          }
      }
      void add(int a[], int b[], int c[])
      {
          c[0] = (a[0] >= b[0]) ? a[0] : b[0];
          for (int i = 1; i <= c[0]; i++)
          {
              /*c[i]+=(a[i]+b[i])%10;
              c[i+1]=(a[i]+b[i])/10;*/
              //这样是错的
              //首先,c[i]这一位的值应该是(c[i]+a[i]+b[i])%10,也要算上这一位本身的数的
              //其次,进位实际也要与前一位的c[i]相关,所以也要在括号内加上c[i]
              //这种方法容易写错,可以用另一种方法替代
              //每一位相加,加完了之后,再统一进位。 
              c[i + 1] = (c[i] + a[i] + b[i]) / 10;
              c[i] = (c[i]+a[i] + b[i]) % 10;
          }
          if (c[c[0] + 1] != 0)
          {
              c[0]++;
          }
      }
      int main()
      {
          int a[205], b[205], c[205];
          memset(a, 0, sizeof(a));
          memset(b, 0, sizeof(b));
          memset(c, 0, sizeof(c));
          initial(a);
          initial(b);
          add(a, b, c);
          for (int i = c[0]; i > 1; i--)
          {
              if (c[i] != 0)
                  break;
              c[0]--;
          }
          for (int i = c[0]; i >= 1; i--)
          {
              cout << c[i];
          }
          cout << endl;
          return 0;
      }
  • 相关阅读:
    java基础
    Java开发环境搭建
    打开CMD的方式和常用的Dos命令
    电脑常用快捷键
    Markdown学习
    c# json object Dictionary互转
    dapper 跨表查询
    Dapper SimpleCRUD Demo
    c#中的常用ToString()方法总结
    android js 模拟键盘
  • 原文地址:https://www.cnblogs.com/xuwanwei/p/10847403.html
Copyright © 2020-2023  润新知