题目地址 https://www.acwing.com/problem/content/description/793/

题目描述
给定两个正整数,计算它们的和。

输入格式
共两行,每行包含一个整数。

输出格式
共一行,包含所求的和。

算法
很明显 输入会超过64位 也就是即使long long 类型也不能进行常规加法
那么输入就是用string 接收字符串 来模拟加法

加法主要是三个数字的相加 数字a 数字b 以及进位
所以 int sum = (a - '0') + (b - '0') + next;
然后得到除开进位后本地应该显示的数字 int local = sum % 10;
计算进位 next = sum / 10;
由于加法是从最小位开始的 所以字符串做了逆转

reverse(a.begin(), a.end());
reverse(b.begin(), b.end());
还要考虑数字a 和数字b 位数不同的情况

while (i < a.size() && i < b.size()) {
add(a[i], b[i], next);
i++;
}

while (i < a.size()) {
add(a[i], '0', next);
i++;
}

while (i < b.size()) {
add('0', b[i], next);
i++;
}
还有一种特殊情况,最后一位还要进位
也就是最后的和 比最大的数还要多一位1 记得最后判断下

if (next == 1)
v.push_back(1);
最后显示记录结果 记得也要做逆转

reverse(v.begin(), v.end());
for (int i = 0; i < v.size(); i++)
{
cout << v[i];
}

  1. #include <iostream>
  2. #include <string>
  3. #include <algorithm>
  4. #include <vector>
  5.  
  6. using namespace std;
  7.  
  8. string a,b;
  9. vector<int> v;
  10.  
  11. void add(int a,int b,int& next)
  12. {
  13. int sum = (a - '') + (b - '') + next;
  14. int local = sum % ;
  15. v.push_back(local);
  16. next = sum / ;
  17. }
  18.  
  19. int main()
  20. {
  21. cin >> a >> b;
  22.  
  23. reverse(a.begin(),a.end());
  24. reverse(b.begin(), b.end());
  25.  
  26. int i = ; int next = ;
  27. while (i < a.size() && i < b.size()) {
  28. add(a[i],b[i],next);
  29. i++;
  30. }
  31.  
  32. while (i < a.size()) {
  33. add(a[i],'',next);
  34. i++;
  35. }
  36.  
  37. while (i < b.size()) {
  38. add('',b[i],next);
  39. i++;
  40. }
  41. if (next == )
  42. v.push_back();
  43. reverse(v.begin(), v.end());
  44. for (int i = ; i < v.size(); i++)
  45. {
  46. cout << v[i];
  47. }
  48.  
  49. return ;
  50.  
  51. }
  52.  
  53. 作者:defddr
  54. 链接:https://www.acwing.com/solution/AcWing/content/2074/
  55. 来源:AcWing
  56. 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

AcWing 791. 高精度加法 解题记录的更多相关文章

  1. AcWing 791. 高精度加法

    https://www.acwing.com/problem/content/793/ #include<bits/stdc++.h> using namespace std; vecto ...

  2. SCAU1143 多少个Fibonacci数--大菲波数【杭电-HDOJ-1715】--高精度加法--Fibonacci数---大数比较

    /*******对读者说(哈哈如果有人看的话23333)哈哈大杰是华农的19级软件工程新手,才疏学浅但是秉着校科联的那句“主动才会有故事”还是大胆的做了一下建一个卑微博客的尝试,想法自己之后学到东西都 ...

  3. 51Nod 1005 有负数的高精度加法

    51Nod是个好地方啊 题意 51Nod基础题第二题,高精度加法,可能有负数. 解题 如果按照一般的高精度,我们发现要分情况讨论,还要写高精度加法和减法,代码实现有点烦.而初中数学里说,省略加号的和. ...

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

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

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

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

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

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

  7. pwnable.kr input解题记录

    pwnable input解题记录 给了源码如下: #include "stdio.h" #include "unistd.h" #include " ...

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

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

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

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

随机推荐

  1. 知道内存中一个图片的指针IntPtr大小,转换成图片显示

    //nSize 为总长度//pImageData 为总数据//nImageSize //一个图片的长度 byte[] _bytes = new byte[nImageSize];// //IntPtr ...

  2. PlayJava Day030

    1.实例化Class类对象 //第一种,可靠高效 Class c0 = String.class ; //第二种,使用对象 Class c1 = "zhangsan".getCla ...

  3. python yield关键词使用总结

    python yield关键词使用总结 by:授客 QQ:1033553122 测试环境 win10 python 3.5 yield功能简介 简单来说,yield 的作用就是把一个函数变成一个 ge ...

  4. echarts 部分美化配置项使用记录

    一.图表背景色配置项,如背景颜色渐变 https://www.echartsjs.com/zh/option.html#backgroundColor 二.图表中图形的颜色,如柱状图行采用渐变颜色显示 ...

  5. [Go] golang定时器的使用

    golang中的定时器是使用的chanel阻塞来实现的,主要使用到了time包中的内容,如果有多个定时器的channel,为了防止阻塞,可以使用select来获取遍历channel 定时器获取的cha ...

  6. 以太网驱动的流程浅析(四)-以太网驱动probe流程【原创】

    以太网驱动的流程浅析(四)-以太网驱动probe流程 Author:张昺华 Email:920052390@qq.com Time:2019年3月23日星期六 此文也在我的个人公众号以及<Lin ...

  7. Spring源码解析-ioc容器的设计

    Spring源码解析-ioc容器的设计 1 IoC容器系列的设计:BeanFactory和ApplicatioContext 在Spring容器中,主要分为两个主要的容器系列,一个是实现BeanFac ...

  8. FreeRTOS操作系统教程发布,支持F103,F407和F429,配套145个例子,1200页教程

    前言说明:1. 首先感谢大家对我们安富莱电子的支持. 2. FreeRTOS最大的优势就是开源免费,商业使用的话不需要用户公开源代码,也不存在任何版权问题,是当前小型嵌入式操作系统   市场使用率最高 ...

  9. CSS属性继承

    在CSS中有一些属性是可以继承的,跟继承家产一样,哎,一代一代的往下传,而有些属性就比较惨了,不能继承,只能自己来设置. 我简略的总结了一下一些可以继承和不可以继承的属性 可继承 1.字体系列属性:f ...

  10. ASP.NET是什么?

    ASP.NET简介 简单来说,ASP.NET 是一个使用 HTML.CSS.JavaScript 和服务器脚本创建网页和网站的开发框架. 微软在2001年开发的第一个版本的ASP.NET,是一种建立在 ...