string 函数真的太爱了,无限大的数字都能用;
其中,数组的存储和打印尤为重要;
接下来,最麻烦的注释来了
#include<iostream>
using namespace std;
const int N=100010;
int a[N],b[N],c[N];
int Add(int a[],int b[],int c[],int cnt){
int t=0;
for(int i=0;i<cnt;i++){
t+=a[i]+b[i];
//为了便于理解
//c[i]=t;
//if(t>10) c[i]-=10;
//实用性强一点的 :
c[i]=t%10;
t/=10;
//这种模和求余在进制转换中是比较常见的;
}
if(t==1) c[cnt++]=1;
return cnt;
}
int main (){
string m,n;
cin>>m>>n;//堪称scanf(%s %s,&a,&b)的进化版,不过在读入多种数据时,用scanf()函数
//速度要快很多;
//接下来就是数组的读入环节了,
//在高精度算法中常逆序存储,便于后面过程理解;
int cnt1=0;
for(int i=m.size()-1;i>=0;i--){
a[cnt1++]=m[i]-'0';
//简单处理下就好了
//至于cnt1,则是用来统计读入数字有多少位
//如读入a :28 然后输出cnt1,可以得到2;
}
int cnt2=0;
for(int i=n.size()-1;i>=0;i--)
b[cnt2++]=n[i]-'0';
int cnt3=Add(a,b,c,max(cnt1,cnt2));
//输出结果就完事了;
for(int i=cnt3-1;i>=0;i--)
cout<<c[i];
return 0;
}
如果你有更好的理解,请加Q: 1719041940 ;
今天的分享就到这里。