关于c++高精度加法的问题

加法进位我不会
题目:

img

这个考虑到进位,因为,比如:ceil(9/2)=5, 9+5=14,要进位,否则是%67
我没有加法进位的c++程序:

#include
using namespace std;
int main()
{
    string s1,t,x;
    double temp,tt,mc;
    getline(cin,s1);
    t=s1;
    reverse(t.begin(),t.end());
    if(t==s1)
    {
        for(int i=0;i'0';
            temp=tt/2;
            mc=ceil(temp);
            int sb=tt+'0'+mc;    
            cout<<char(sb);        
        }
    }
    else
    {
        cout<<"No huiwen";
    }
    return 0;
}



十分感谢大家回复

从低位往高位判断,如果低位增量后需要进位,则将次低位的的增量加加。

文章:C++的高精度加法 中也许有你想要的答案,请看下吧

    CUnsignedBigInt& CUnsignedBigInt::operator+=(const CUnsignedBigInt& n)
    {
        bool carry = 0;//进位
        auto iter1 = m_data.rbegin();
        auto iter2 = n.m_data.rbegin();
        for (; iter1 != m_data.rend() && iter2 != n.m_data.rend(); ++iter1, ++iter2)
        {
            int t = *iter1 + *iter2 + carry;
            *iter1 = t % CUnsignedBigInt::m_radix;
            carry = t / m_radix;
        }
        bool flag = (iter1 == m_data.rend());//容量用完了吗?
        if (flag)//容量用完,同时说明n可能还有位没加!
        {
            while (iter2 != n.m_data.rend())
            {
                int t = *iter2 + carry;
                carry = t / m_radix;
                m_data.push_front(t % m_radix);
                ++iter2;
            }
            if (carry)
            {
                m_data.push_front(1);
            }
        }
        else//容量没用完,说明n已经加完,直接考虑最后的进一就行
        {
            while (carry)
            {
                if (flag)
                {
                    m_data.push_front(1);//进一
                    break;
                }
                else
                {
                    int t = *iter1 + carry;
                    *iter1 = t % m_radix;
                    carry = t / m_radix;
                    flag = (++iter1 == m_data.rend());
                }
            }
        }
        return *this;
    }