C++大数加法(字符串加法)

string add(string a,string b)
{
    string ret="";
    reverse(a.begin(),a.end());
    reverse(b.begin(),b.end());
    int lena=a.size();
    int lenb=b.size();
    int i=0,j=0;
    int c=0;
    while(i<lena&&j<lenb)
    {
        int now=a[i]-'0'+b[i]-'0'+c;
        c=now/10;
        now=now%10;
        char charnow=now+'0';
        ret+=charnow;
        i++;
        j++;
    }
    while(i<lena)
    {
        int now=a[i]-'0'+c;
        c=now/10;
        now=now%10;
        char charnow=now+'0';
        ret+=charnow;
        i++;
    }
    while(j<lena)
    {
        int now=b[j]-'0'+c;
        c=now/10;
        now=now%10;
        char charnow=now+'0';
        ret+=charnow;
        j++;
    }
    if(c>0)
    {
        ret+="1";
    }
    reverse(ret.begin(),ret.end());
    return ret;
}

上来先将两个字符串都翻转,表示从低位开始加一直加到最高位,c为进位。

两个字符串有长有短,短的到头了长的可以继续加。

最后进位如果大于0,就让ret再加个"1"。

翻转以后再返回。

发布了73 篇原创文章 · 获赞 203 · 访问量 9万+

猜你喜欢

转载自blog.csdn.net/weixin_41676881/article/details/103412467