AcWing 791. 高精度加法 解题记录
题目地址 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];
}
#include <iostream>
#include <string>
#include <algorithm>
#include <vector> using namespace std; string a,b;
vector<int> v; void add(int a,int b,int& next)
{
int sum = (a - '') + (b - '') + next;
int local = sum % ;
v.push_back(local);
next = sum / ;
} int main()
{
cin >> a >> b; reverse(a.begin(),a.end());
reverse(b.begin(), b.end()); int i = ; int next = ;
while (i < a.size() && i < b.size()) {
add(a[i],b[i],next);
i++;
} while (i < a.size()) {
add(a[i],'',next);
i++;
} while (i < b.size()) {
add('',b[i],next);
i++;
}
if (next == )
v.push_back();
reverse(v.begin(), v.end());
for (int i = ; i < v.size(); i++)
{
cout << v[i];
} return ; } 作者:defddr
链接:https://www.acwing.com/solution/AcWing/content/2074/
来源:AcWing
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
最新文章
- [LeetCode] Power of Two 判断2的次方数
- 我用ANDROID STUDIO开发,页面上总包这个警告,很烦!网上说是sdk版本问题,但是我是基于25开发的,最小版本也是19,有没有老司机啊?3克油
- 横版CG场景
- 单例模式(Java)
- 自己用C语言写单片机PIC16 serial bootloader
- 【精心挑选】15款最好的 jQuery 网格布局插件(Grid Plugins)
- 回调函数中使用MFC类的成员或对话框控件的简单方法
- 【codevs1191】数轴染色 线段树 区间修改+固定区间查询
- 在csdn里markdown感受
- Go Deeper(2010成都现场赛题)(2-sat)
- 刑事案件的构成要素 zt
- C# DataTable的詳細使用方法
- chrome浏览器打开网页,总是跳转到2345主页的解决方法 2345.com 绑架主页
- python抓取网页图片
- crm创建和编辑全局选项集
- jenkins 设置自动发送邮件
- sed从入门到深入修炼目录
- flask websocker
- laravel整理笔记(一)
- Java并发编程的艺术读后总结
热门文章
- 华为hcnp r&;s考试一共有三门,R&;S-IERS,R&;S-IENP,R&;S-IEEP
- jmeter相关知识学习记录
- 《推送开发全面盘点当前Android后台保活方案的真实运行效果》
- 解决IDEA中的DashBoard 不显示端口号
- SpringBoot日志原理解析
- VUE Error: listen EADDRNOTAVAIL: address not available
- SpringCloud的入门学习之概念理解、Ribbon负载均衡入门
- Add a Parametrized Action 添加带参数的按钮
- Inherit from the Business Class Library Class 继承自Business类(EF)
- HTML元素分类 块级元素 内联元素 块级内联元素