3116 高精度练习之加法

题目描述 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位

近几天会做一套高精度专题,主要练习高精度加法、高精度减法、高精度乘法。

模拟加法的手算过程,注意进位的处理。

附AC代码:

 1 #include<iostream>
 2 #include<cstring>
 3 using namespace std;
 4 
 5 int a[510],b[510],c[510];
 6 
 7 int main(){
 8     string al,bl;
 9     cin>>al>>bl;
10     memset(a,0,sizeof(a));
11     memset(b,0,sizeof(b));
12     memset(c,0,sizeof(c));
13     int lena=al.size();
14     int lenb=bl.size();
15     for(int i=0;i<lena;i++){//将两加数反向输入数组 
16         a[lena-i]=al[i]-48;//此处也可用“-‘0’”代替 
17     }
18     for(int i=0;i<lenb;i++){
19         b[lenb-i]=bl[i]-48;
20     }
21     int lenc=1;
22     int x=0;
23     while(lenc<=lena||lenc<=lenb){//模拟加法运算 
24         c[lenc]=a[lenc]+b[lenc]+x;
25         x=c[lenc]/10;
26         c[lenc]%=10;
27         lenc++;
28     }
29     c[lenc]=x;
30     if(c[lenc]==0){//去除开头为0的情况 
31         lenc--;
32     }
33     for(int i=lenc;i>=1;i--){//输出最终和 
34         cout<<c[i];
35     }
36     cout<<endl;
37     return 0;
38 } 
原文地址:https://www.cnblogs.com/Kiven5197/p/5672612.html