高精度加法

 1 /*
 2     高精度加法
 3     结构体初始化 
 4     重载赋值符号 加号
 5     定义输出字符串函数用于输出流
 6     重载输入输出流 
 7 */
 8 #include<bits/stdc++.h>
 9 using namespace std;
10 const int maxn=10000;
11 struct bign{
12     int d[maxn],len;
13     inline bign(){len=1;memset(d,0,sizeof(d));};
14     inline bign operator = (const char* num)
15     {
16         memset(d,0,sizeof(d));
17         len=strlen(num);
18         for(int i=0;i<len;i++) d[i]=num[len-i-1]-48;
19         return *this;
20     }
21     inline bign operator + (const bign &b)
22     {
23         int x=0,i,lenmax=max(len,b.len);
24         bign c;c.len=lenmax;
25         for(i=0;i<lenmax;i++)
26         {
27             c.d[i]=d[i]+x+b.d[i];
28             x=c.d[i]/10;
29             c.d[i]%=10;
30         }
31         x?c.d[i]=x:i--;
32         c.len=i+1;
33         return c;
34     }
35     inline string str() const
36     {
37         char s[maxn]={};
38         for(int i=0;i<len;i++) s[len-i-1]=d[i]+48;
39         return s;
40     }
41 }a,b;
42 inline istream& operator >> (istream &in,bign &x)
43 {
44     string s;
45     in>>s;
46     x=s.c_str();
47     return in; 
48 }
49 inline ostream& operator << (ostream &out,const bign &x)
50 {
51     out<<x.str();
52     return out;
53 }
54 int main()
55 {
56     cin>>a>>b;
57     cout<<a+b;
58     return 0;
59 }
原文地址:https://www.cnblogs.com/yu-xing/p/10125427.html