洛谷 P1601 A+B Problem(高精) 题解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了洛谷 P1601 A+B Problem(高精) 题解相关的知识,希望对你有一定的参考价值。

此文为博主原创题解,转载时请通知博主,并把原文链接放在正文醒目位置。

题目链接 :https://www.luogu.org/problem/show?pid=1601

题目背景

题目描述

高精度加法,x相当于a+b problem,[b][color=red]不用考虑负数[/color][/b]

输入输出格式

输入格式:

分两行输入a,b<=10^500

输出格式:

输出只有一行,代表A+B的值

输入输出样例

输入样例#1:
1
1
输出样例#1:
2

AC代码:
 1 #include<cstdio>
 2 #include<algorithm>
 3 #include<iostream>
 4 #include<cstring>
 5 
 6 using namespace std;
 7 const int MAXN = 10000 + 5;
 8 
 9 struct bign
10 {
11     int len;
12     bool flag;
13     int num[MAXN];
14     
15     bign(){len = 0;flag = false;memset(num,0,sizeof(num));}
16     
17     void clear()
18     {
19         len = 0;
20         flag = false;
21         memset(num,0,sizeof(num));
22     }
23 };
24 bign ans;
25 
26 bign operator + (bign &a,bign &b)
27 {
28     ans.clear();
29     int x = 0;
30     int len = max(a.len,b.len)+1;
31     
32     for(int i = 1;i <= len;++ i)
33     {
34         ans.num[i] = a.num[i] + b.num[i] + x;
35         x = ans.num[i]/10;
36         ans.num[i] %= 10;
37     }
38     
39     if(!ans.num[len]) len --;
40     ans.len = len;
41     
42     return ans;
43 }
44 
45 inline bign get()
46 {
47     ans.clear();
48     string s;
49     cin>>s;
50     int len = s.length();
51     for(int i = 0;i < len;++ i)
52         ans.num[len-i] = s[i]-0;
53     ans.len = len;
54     return ans;
55 }
56 
57 inline void print(bign a)
58 {
59     int len = a.len;
60     for(int i = len;i >= 1;-- i)
61         printf("%d",a.num[i]);
62     puts("");
63 }
64 
65 int main()
66 {
67     bign a,b;
68     a = get();
69     b = get();
70     print(a+b);
71     return 0;
72 } 

 



以上是关于洛谷 P1601 A+B Problem(高精) 题解的主要内容,如果未能解决你的问题,请参考以下文章

P1601 A+B Problem(高精)

洛谷P1480 A/B Problem(高精除高精)

洛谷 P1303 A*B Problem 高精度乘法

洛谷 P1303 A*B Problem(高精度乘法) 题解

洛谷 P1932 A+B A-B A*B A/B A%B Problem(高精度板子)

洛谷 P2142 高精度减法 题解