我有一个问题,有两个给定的数字x和n,任务是找到x的一个刚好等于或小于n的次幂。我知道我可以通过开始一个循环来做到这一点,但它似乎不是那么有效的解决方案,我想知道任何在0(1)或其他有效的解决方案。
可以这样写:
int foo (int x, int n) {
int counter = x;
int pow = 1;
while(counter < n) {
pow =+ pow
counter =* counter ;
}
if(counter == n)
return pow;
while(x > n) {
counter = counter/x;
pow--;
}
return pow;
}
我认为在最坏的情况下,它仍然是O(log(n)),但在某些情况下,它应该表现得更好。