在C ++中为pow(x,y)编写一个迭代O(Log 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