我正在试图解决一个问题,这个问题要求找到1

long around(long n)
{
    long around = 0;

    while (n > 0){
        around = around * 10 + (n % 10);
        n = n / 10;
    }

    return around;
}

long convert(int n, int b)
{
    long x = 0;

    while (true){
        x = x * 10 + (n % b);
        if (n == 1)
            break;
        n = n / b;
    }

    return around(x);
}

请推荐任何更快的解决方案来将十进制转换为基B,或给出任何提高我当前解决方案性能的提示。

最佳答案

问题是您的convert函数,它会进入一个无限循环。你只有在n == 1时才会崩溃,但如果它永远不会变成1呢?
考虑n = 4b = 5。那么4 / 5就是0。一旦n为零,它将始终为零,并且永远不会1
n < b时,你应该跳出循环。

关于algorithm - 将小数转换为基数x,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5283332/

10-13 01:21