如何使x的幂小于或等于给定的数n?

  • 本文关键字:何使 小于 algorithm c++11 math
  • 更新时间 :
  • 英文 :


我有一个问题,有两个给定的数字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)),但在某些情况下,它应该表现得更好。

最新更新