高精度加法

a, b均为正整数

#include <iostream>
using namespace std; const int N = 100010;
int A[N], B[N], C[N]; int Add(int a[], int b[], int c[], int cnt) { int t = 0;//t表示进位 for (int i=1; i<=cnt; i++) {
t += a[i] + b[i];//进位加上a和b第i位上的数
c[i] = t % 10;//c的值就是进位的个位数
t /= 10;//把t的个位数去掉只剩下十位数,即只剩下这个位置的进位
}
if (t) c[++cnt] = 1;//如果t==1,表示还有一个进位,要补上 return cnt;
} int main() { string a, b;
cin >> a >> b; //A和B倒着放进int数组,因为有进位,倒着放容易处理
int cnt1 = 0;
for (int i=a.size()-1; i>=0; i--)
A[++cnt1] = a[i] - '0'; int cnt2 = 0;
for (int i=b.size()-1; i>=0; i--)
B[++cnt2] = b[i] - '0'; int tot = Add(A, B, C, max(cnt1, cnt2)); //因为A和B是倒着放的,所以C也要倒着输出
for (int i=tot; i>=1; i--)
cout << C[i];
}

转载https://www.acwing.com/solution/content/10016/

最新文章

  1. WebBrowser打开Word文档的一些注意事项
  2. windows核心编程---第四章 进程
  3. php的单例模式
  4. Reactor 与 Proactor
  5. Git教程之管理修改(6)
  6. Ubuntu下的截图工具
  7. [BZOJ1061] [Noi2008] 志愿者招募 (费用流)
  8. (办公)springboot配置全局异常
  9. 实战ELK(2) ElasticSearch 常用命令
  10. 【机器学习】激活函数(ReLU, Swish, Maxout)
  11. android studio maven 仓库的使用
  12. [leetcode.com]算法题目 - Symmetric Tree
  13. Linux的mv 命令
  14. idea 连接数据库
  15. Spring整合MyBatis(五)MapperScannerConfigurer
  16. 【C#】利用JMail发送邮件
  17. quartz cron表达式demo
  18. python --循环对象
  19. C/C++中RAND_MAX的用法
  20. linux开机启动脚本

热门文章

  1. springcloud12-spring cloud stream
  2. ECharts 提示框组件Tooltip属性大全(包含文本注释)
  3. 学习Java Day30
  4. 【TS】枚举
  5. 郁金香 用C写一个定时器来循环获取阳光
  6. 【译】.NET 7 中的性能改进(三)
  7. 使用云服务器配置MariaDB环境,Navicat远程连接一直出错误代码 &quot;2002 - Can&#39;t connect to server on &#39;&#39; (10060)&quot;
  8. 如何获取win10用户最高权限
  9. Fastjson Sec
  10. vue-element-admin 怎么改后端 可以调跳过登录并且发送接口请求