高精度加法
这里介绍一下重载运算符的写法
搞完之后直接就cout<<a+b<<endl岂不是很爽
钟长者的亲笔代码:
然而我把他的大括号换行改成不换行了
#include<bits/stdc++.h>
using namespace std;
struct gaojing{
int l,z[123456];
gaojing(){l=1; memset(z,0,sizeof(z));}
friend istream& operator>>(istream &cin, gaojing &v){
static char s[100000];
cin>>s;
v.l = strlen(s);
for(int i=0; i<v.l; i++) v.z[i] = s[v.l-i-1]-'0';
return cin;
}
friend ostream& operator<<(ostream &cout, const gaojing &v){
for(int i=v.l-1; i>=0; i--) cout<<v.z[i];
return cout;
}
};
gaojing operator+(const gaojing &a, const gaojing &b){
gaojing c;
c.l = max(a.l, b.l);
for(int i=0; i<c.l; i++) {
c.z[i] += a.z[i] + b.z[i];
if(c.z[i]>=10){
c.z[i+1] ++;
c.z[i] -= 10;
}
}
if(c.z[c.l]!=0) c.l++;
return c;
}
int main(){
gaojing a,b;
cin>>a>>b;
cout<<a+b<<endl;
return 0;
}