高精度加法
虽然高精度是比较基础,但不管怎么说还是要敲一遍的
代码长,知识基础,是处理边界的练手经典
所以
我也写了一些!!!(接受众大佬的批评,指点)
//高精度(加法)--Crazily //事先说明一下,之所有的register都注释 //是因为noip是禁用滴、、、 #include<bits/stdc++.h> using namespace std; string a,b;//原来的两个数 int c[1000100];//合成数组 int lena,lenb; int main(){ cin>>a>>b; lena=a.length(); lenb=b.length(); //倒装数组鸭 for(register int i=0;i<=(lena-1)/2;i++){ swap(a[i],a[(lena-1)-i]); } //cout<<a; for(register int i=0;i<=(lenb-1)/2;i++){ swap(b[i],b[(lenb-1)-i]); } //cout<<b; for(register int i=1;i<=max(lena,lenb);i++){ if(i<=min(lena,lenb)) c[i]=a[i-1]+b[i-1]-'0'-'0'; else c[i]=a[i-1]+b[i-1]-'0'; } int lenc=max(lena,lenb); for(register int i=1;i<=lenc;i++){ if(c[i]>=10){ c[i]=c[i]-10; c[i+1]++; } } if(c[lenc+1]>0){ lenc++; c[lenc]++; } //接下来就是倒叙输出了 bool o=1; for(register int i=lenc;i>=1;i--){ if(c[i]==0) if(o==1) continue; if(c[i!=0]) o=0;//别忘了去除前导零哦。 cout<<c[i]; } return 0; }
第一次些小小解析
咕力咕力@A@