高精度加法

虽然高精度是比较基础,但不管怎么说还是要敲一遍的

代码长,知识基础,是处理边界的练手经典

所以

我也写了一些!!!(接受众大佬的批评,指点)

//高精度(加法)--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@

posted @ 2018-08-30 20:54  Crazily  阅读(195)  评论(0编辑  收藏  举报