3116 高精度练习之加法

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