最近蒟蒻刚学了高精算法,来发个模板吧!
------------
高精加(HAA)【模板】
1 #include<bits/stdc++.h> 2 using namespace std; 3 string x,y; 4 int a[100010],b[100010],c[100010],xa,xb,xc; 5 /*数组大小根据题目数据范围大小确定 6 此模板只适用于0≤x,y≤10^5的情况*/ 7 int main(){ 8 cin>>x>>y; 9 xa=x.length(),xb=y.length(); 10 xc=max(xa,xb); 11 for(int i=0;i<xa;i++) a[xa-i]=x[i]-'0'; 12 for(int i=0;i<xb;i++) b[xb-i]=y[i]-'0'; 13 for(int i=1;i<=xc;i++){ 14 c[i]+=a[i]+b[i]; 15 c[i+1]=c[i]/10; 16 c[i]%=10; 17 } 18 if(c[xc+1]) xc++; 19 for(int i=xc;i>=1;i--) cout<<c[i]; 20 return 0; 21 }
------------
高精减(HAS)【模板】
1 #include<bits/stdc++.h> 2 using namespace std; 3 string x,y; 4 int a[100010],b[100010],c[100010],xa,xb; 5 /*数组大小根据题目数据范围大小确定 6 此模板只适用于0≤x,y≤10^5的情况*/ 7 int main(){ 8 cin>>x>>y; 9 xa=x.length(),xb=y.length(); 10 if(xa<xb||xa==xb&&x<y){ 11 swap(x,y); 12 swap(xa,xb); 13 cout<<"-"; 14 } 15 for(int i=0;i<xa;i++) a[xa-i]=x[i]-'0'; 16 for(int i=0;i<xb;i++) b[xb-i]=y[i]-'0'; 17 for(int i=1;i<=xa;i++){ 18 if(a[i]<b[i]){ 19 a[i]+=10; 20 a[i+1]--; 21 } 22 c[i]=a[i]-b[i]; 23 } 24 while(c[xa]==0&&xa>1) xa--; 25 for(int i=xa;i>=1;i--) cout<<c[i]; 26 return 0; 27 }