高精度加法(进制)
1 /* 2 高精度进制加法 3 n为进制(n<=36) 4 */ 5 #include<bits/stdc++.h> 6 using namespace std; 7 const int maxn=10000; 8 int n; 9 struct bign{ 10 int d[maxn],len; 11 inline bign(){len=1;memset(d,0,sizeof(d));} 12 inline bign operator = (const char* num) 13 { 14 memset(d,0,sizeof(d)); 15 len=strlen(num); 16 for(int i=0;i<len;i++) 17 { 18 if(num[len-1-i]>'9') d[i]=10+num[len-i-1]-'A'; 19 else d[i]=num[len-i-1]-48; 20 } 21 return *this; 22 } 23 inline bign operator + (const bign &b) 24 { 25 bign c; 26 int x=0,i,lenmax=max(len,b.len); 27 for(i=0;i<lenmax;i++) 28 { 29 c.d[i]=d[i]+b.d[i]+x; 30 x=c.d[i]/n; 31 c.d[i]%=n; 32 } 33 x?c.d[i]=i:i--; 34 c.len=i+1; 35 return c; 36 } 37 inline string str () const 38 { 39 char s[maxn]={}; 40 for(int i=0;i<len;i++) 41 { 42 if(d[len-i-1]>9) s[i]='A'+d[len-i-1]-10; 43 else s[i]=d[len-i-1]+48; 44 } 45 return s; 46 } 47 }a,b; 48 inline istream& operator >> (istream &in,bign &x) 49 { 50 char s[maxn]={}; 51 in>>s; 52 x=s; 53 return in; 54 } 55 inline ostream& operator << (ostream &out,const bign &x) 56 { 57 out<<x.str(); 58 return out; 59 } 60 int main() 61 { 62 cin>>n>>a>>b; 63 cout<<a+b; 64 return 0; 65 }