所谓高精度加法就是对两个和可能会超过long long数据范围的数进行加法运算。这种情况下,显然不能使用常规的方法进行运算。
  那么,不妨考虑一下人在纸上是如何进行加法运算的。当人进行加法运算时,通常会使两个数的右端对齐,而且位数较多的放在上面。然后从低位到高位进行运算,若这一位的运算结果与进位的和超过了9,则对这一位只保留结果的个位数,并使下一位的进位为1。
为了保证能够容纳得下足够多的位数,这里我使用了string类型进行数字的保存。在进行高精度加法之前,为了确保两个数字位数相等,首先要在较短的数字前面补0。

 if(x.length() < y.length())                 //保证y始终时是位数较短的数字字符串
swap(x, y);
int delta = x.length() - y.length(); //计算两个字符串的长度差
for(int i = ; i < delta; i++) //在较短的字符串前补0,使其长度等于较长的字符串的长度
y = "" + y;

之后开始从低位到高位进行运算

#include <iostream>
#include <string>
#include <algorihtm>
using namespace std;
string add_int(string_x, string _y)
{
  string x = _x, y = _y;
  string result;
  int jw = ;   if(x.length() < y.length()) //保证y始终时是位数较短的数字字符串
    swap(x, y);
  int delta = x.length() - y.length(); //计算两个字符串的长度差
for(int i = ; i < delta; i++) //在较短的字符串前补0,使其长度等于较长的字符串的长度
y = "" + y;
//从低位到高位进行运算
for(int i = x.length() - ; i >= ; i--)
  {
    int a, b ,sum;
    a = x[i] - '';
    b = y[i] - '';
    sum = a + b + jw;
    if(sum >= )
    {
      jw = ;
      result += char(sum % + '');
    }
    else
    {
      jw = ;
      result += char(sum % + '');
    }
  }
  //若循环结束后,仍有进位,说明结果超出了加数中较长的一个的位数,根据加法的法则,应在结果前面加“1”
if(jw == )
    result += "";
  //反转结果。因为前面是从后往前运算,而字符串是从前往后加的,所以要反转一下
reverse(result.begin(), result.end());
  return result;
}
int main()
{
  string a, b;
  cin >> a >> b;
  cout << add_int(a, b);
  return ;
}

声明:CSDN上的账号“奔跑的小蜗牛”也是我本人的账号

【模板】C++高精度加法的更多相关文章

  1. NEFU 2016省赛演练一 F题 (高精度加法)

    Function1 Problem:F Time Limit:1000ms Memory Limit:65535K Description You know that huicpc0838 has b ...

  2. java算法 蓝桥杯 高精度加法

    问题描述 在C/C++语言中,整型所能表示的范围一般为-231到231(大约21亿),即使long long型,一般也只能表示到-263到263.要想计算更加规模的数,就要用软件来扩展了,比如用数组或 ...

  3. 用c++实现高精度加法

    c++实习高精度加法 最近遇到一个c++实现高精度加法的问题,高精度问题往往十复杂但发现其中的规律后发现并没有那么复杂,这里我实现了一个整数的高精度加法,主要需要注意以下几点: 1:将所需输入的数据以 ...

  4. 高精度加法——经典题 洛谷p1601

    题目背景 无 题目描述 高精度加法,x相当于a+b problem,[b][color=red]不用考虑负数[/color][/b] 输入输出格式 输入格式: 分两行输入a,b<=10^500 ...

  5. 高精度加法--C++

    高精度加法--C++ 仿照竖式加法,在第一步计算的时候将进位保留,第一步计算完再处理进位.(见代码注释) 和乘法是类似的. #include <iostream> #include < ...

  6. hdu1002 A + B Problem II(高精度加法) 2016-05-19 12:00 106人阅读 评论(0) 收藏

    A + B Problem II Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  7. POJ 3181 Dollar Dayz(全然背包+简单高精度加法)

    POJ 3181 Dollar Dayz(全然背包+简单高精度加法) id=3181">http://poj.org/problem?id=3181 题意: 给你K种硬币,每种硬币各自 ...

  8. leetcode 67. Add Binary (高精度加法)

    Given two binary strings, return their sum (also a binary string). For example,a = "11"b = ...

  9. leetcode 66. Plus One(高精度加法)

    Given a non-negative number represented as an array of digits, plus one to the number. The digits ar ...

随机推荐

  1. centos7下glances系统监控的安装

    yum install epel* -y yum install python-pip python-devel -y yum install glances -y 启动>>glances

  2. 关于pycharm+opencv没有代码提示的问题解决方法记录

    代码可以看出实际我们引入的应该是cv2.cv2下面. 所以我们代码只需要import cv2.cv2 as cv 即可. 记着要重新启动下pycharm哦. 可以参考: https://blog.cs ...

  3. JavaWeb_(Spring框架)整合Mybatis加入事务操作数据库

    整合Mybatis a)导包: i.Spring:基本包.aop.aspects.jdbc.tx.test: ii.Mybatis:mybatis-3.4.6 iii.整合包:mybatis-spri ...

  4. Jenkins修改显示语言为中文

    1 安装插件 主界面 -> 系统管理 -> 插件管理 -> 可选插件 1.1 安装插件Locale plugin 1.2 安装插件Localization: Chinese(Simp ...

  5. k-means和iosdata聚类算法在生活案例中的运用

    引言:聚类是将数据分成类或者簇的过程,从而使同簇的对象之间具有很高的相似度,而不同的簇的对象相似度则存在差异.聚类技术是一种迭代重定位技术,在我们的生活中也得到了广泛的运用,比如:零件分组.数据评价. ...

  6. JavaScript作用域与闭包总结

    1.全局作用域 所有浏览器都支持 window 对象,它表示浏览器窗口,JavaScript 全局对象.函数以及变量均自动成为 window 对象的成员.所以,全局变量是 window 对象的属性,全 ...

  7. Android控件RecyclerView的基本用法

    Android控件RecyclerView的基本用法 转 https://www.jianshu.com/p/e71a4b73098f   github: https://github.com/Cym ...

  8. IO注意事项

    read()方法返回值为什么是int? 因为字节输入流可以操作任意类型的文件,比如图片音频等,这些文件底层都是以二进制形式的存储的,如果每次读取都返回byte,有可能在读到中间的时候遇到1111111 ...

  9. 使用ffmpeg裁剪和合并视频

    剪切视频 使用 -ss 和 -t 选项,从第0秒开始,向后截取31秒视频,并保存 ffmpeg -ss :: -i video.mp4 -vcodec copy -acodec copy -t :: ...

  10. 阶段5 3.微服务项目【学成在线】_day04 页面静态化_15-页面静态化-模板管理-模板管理业务流程

    在视频教学的过程中,不会去做模板管理的模块 cms_template用来存储模板信息 cms_page 这一些课程页面用的是一个模板 模板的详情.templateFileId是模板的文件id 模板的文 ...