我正在解决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;
}
}
答案 0 :(得分:0)
您可以尝试 k&gt; = 2 并使用N
限制sqrt(w)
,在循环中使用i
启动2
。如果未找到解决方案,则 k = 1 , n = w 。此外,您不需要pow
,您可以在每次迭代时将中间乘积乘以N
。