MSB对齐加法

MSB aligned addition

我正在寻找一种方法(最好是递归的)来添加两个 msb 对齐的整数。

例如:125 + 25 = 375。

我试图反转数字以有效对齐它们,但进位都是错误的。 IE。 526 (625) + 05 (50) = 531.

1) 使用 while / 10 循环计算两个数字的位数

2) 求差

3) 最小数乘以 10 ^ 差值

4) 将它们相加

您需要为此添加 math.h。假设 m 和 n 是自然数,下面的方法是将较小的数字乘以 10(如果需要),直到它的位数与较大的数字相同,然后相加。

int funkyAdd (int m, int n)
{
    if ((m<=0)||(n<=0)){return -1;}
    int smaller=std::min(m,n);
    int larger=std::max(m,n);
    while (floor(log10(smaller))<floor(log10(larger))){smaller*=10;};
    return (smaller+larger);
}