3116 高精度练习之加法

本文介绍了一种解决大数加法问题的算法实现方法,通过字符串处理和逐位相加的方式,实现了两个不超过500位的大数相加的功能,并提供了一个完整的C++代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

3116 高精度练习之加法

 

 时间限制: 1 s
 空间限制: 128000 KB
 题目等级 : 黄金 Gold
 
 
 
题目描述  Description

给出两个正整数A和B,计算A+B的值。保证A和B的位数不超过500位。

输入描述  Input Description

读入两个用空格隔开的正整数

输出描述  Output Description

输出A+B的值

样例输入  Sample Input

3 12

样例输出  Sample Output

15

数据范围及提示  Data Size & Hint

两个正整数的位数不超过500位

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<string>
 5 
 6 using namespace std;
 7 const int N=1001;
 8 
 9 char aa[N];
10 char bb[N];
11 int c[N];
12 int a[N];
13 int b[N];
14 
15 int main()
16 {
17     scanf("%s%s",aa,bb);
18     int la=strlen(aa);
19     int lb=strlen(bb);
20     for(int i=0;i<la;i++)
21         a[i+1]=aa[la-i-1]-'0';
22     for(int i=0;i<lb;i++)
23         b[i+1]=bb[lb-i-1]-'0';
24     for(int i=1;i<=max(la,lb);i++)
25        c[i]=a[i]+b[i];
26     for(int i=1;i<=max(la,lb);i++)
27        if(c[i]>=10)
28        {
29            c[i+1]++;
30         c[i]%=10;    
31        }  
32     int j=max(la,lb)+1;    
33     while(!c[j]&&j>1)
34     {
35         j--;
36     }
37     for(int i=j;i>=1;i--)
38     {
39         cout<<c[i];
40     }
41 }

 

 

转载于:https://www.cnblogs.com/lyqlyq/p/6596892.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值