用 C++ 編寫一個 O(Log y) 迭代 pow(x, y) 函式


在此問題中,我們獲得兩個整數 x 和 y。我們的任務是建立一個函式,其將透過迭代方法與 pow(x,y) 等效,該方法將在時間複雜度為 0(Log y) 的情況下完成任務。

我們舉幾個例子來理解該問題,

輸入

x = 7 , y = 3

輸出

343

pow(x,y) 的迭代函式將迭代並更新 y 的奇數值的結果,將其乘以 x,並在每次迭代時將 x 更新為 x2。

顯示解決方案實現的程式

示例

 即時演示

#include <iostream>
using namespace std;
void calcPower(int x, unsigned int y) {
   int result = 1;
   while (y > 0) {
      if (y & 1)
      result *= x;
      y = y >> 1;
      x = x * x;
   }
   cout<<result;
}
int main() {
   int x = 7;
   unsigned int y = 3;
   cout<<x<<" raised to "<<y<<" is ";
   calcPower(x,y);
   return 0;
}

輸出

raised to 3 is 343

更新於:17-4-2020

453 次瀏覽

開啟您的職業生涯

透過完成該課程獲得認證

開始
廣告