AcWing 791. 高精度加法C++数组实现
2024-10-20 20:32:04
高精度加法
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/
最新文章
- WebBrowser打开Word文档的一些注意事项
- windows核心编程---第四章 进程
- php的单例模式
- Reactor 与 Proactor
- Git教程之管理修改(6)
- Ubuntu下的截图工具
- [BZOJ1061] [Noi2008] 志愿者招募 (费用流)
- (办公)springboot配置全局异常
- 实战ELK(2) ElasticSearch 常用命令
- 【机器学习】激活函数(ReLU, Swish, Maxout)
- android studio maven 仓库的使用
- [leetcode.com]算法题目 - Symmetric Tree
- Linux的mv 命令
- idea 连接数据库
- Spring整合MyBatis(五)MapperScannerConfigurer
- 【C#】利用JMail发送邮件
- quartz cron表达式demo
- python --循环对象
- C/C++中RAND_MAX的用法
- linux开机启动脚本
热门文章
- springcloud12-spring cloud stream
- ECharts 提示框组件Tooltip属性大全(包含文本注释)
- 学习Java Day30
- 【TS】枚举
- 郁金香 用C写一个定时器来循环获取阳光
- 【译】.NET 7 中的性能改进(三)
- 使用云服务器配置MariaDB环境,Navicat远程连接一直出错误代码 ";2002 - Can&#39;t connect to server on &#39;&#39; (10060)";
- 如何获取win10用户最高权限
- Fastjson Sec
- vue-element-admin 怎么改后端 可以调跳过登录并且发送接口请求