carry:进位数,如果大于等于n加到下一位

bit:结果每一位的数,应该考虑到两个相加再加上carry

过程:倒着遍历相加的两数,用bit记录两数对应的位上的数字相加+carry的值

分两种情况讨论:

(1)bit>=n:保留个位(carry-n)并加到结果对应的位置,carry置1

(2)bit<n:  直接把bit加到结果对应的位置,carry置0

考虑到两个数可能不一样长:

假设数1长一点,倒着遍历数1剩下的数,用bit记录数1对应的位上的数字+carry的值,同样将bit和n比较大小

考虑到两个数加完后carry=1,还有一个进位,结果加上1

//n进制数相加

int carry=0;
int bit;
int 数1,数2;
point1指向数1的最低位,point2指向数2的最低位
res;//结果
while(point1不到最高位&&point2不到最高位)
{
     bit=point1->val +point2->val+carry;
     if(bit>=n)
     {
         carry=1;
        结果最后加入数(bit-n);
       
 
     }
     else
     {
         carry=0;
         结果最后加入数(bit);
     }
}
while(point1不到最高位)
{
    bit= point1->val+carry;
    if(bit>=n)
    {
        carry=1;
       结果加入数(bit-n);
        
    }
    else{
        carry=0;
        结果加入数(bit);
    }
}
while(point2不到最高位)
{
    bit=point2->val+carry;
    if(bit>=n)
    {
        carry=1;
        结果加入数(bit-10);
    }
    else{
        carry=0;
        结果加入数(bit);
    
    }
}
//如果到最后还有进位没加
if(carry==1)
{
    结果加入数(1);
}
return 结果;
    }
};