给定一个整数w,找到n和k,使得n ^ k = w

时间:2018-02-20 01:15:52

标签: algorithm math exponential exponent

我正在解决Uva问题(#107),我知道我有正确的答案,现在我只需要优化它,这样就不会超时。我相信这个片段是罪魁祸首。我需要找到n和k这样n ^ k =工作。我尝试使用自己的电源功能来加快速度,但这并没有帮助。有哪些方法可以快速计算基数和指数等于给定值?

N = 2;
for(int i = 1; i < range; i++){
    result = pow(N, i);

    if(result > working){
        i = 1;
        N++;
    }

    if(result == working){
        k = i;
        break;
    }
}

1 个答案:

答案 0 :(得分:0)

您可以尝试 k&gt; = 2 并使用N限制sqrt(w),在循环中使用i启动2。如果未找到解决方案,则 k = 1 n = w 。此外,您不需要pow,您可以在每次迭代时将中间乘积乘以N