用 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 次浏览

开启您的职业生涯

通过完成该课程获得认证

开始
广告