Computer >> Máy Tính >  >> Lập trình >> C ++

Viết một hàm O (Log y) lặp lại cho pow (x, y) trong C ++

Trong bài toán này, chúng ta được cung cấp hai số nguyên x và y. Nhiệm vụ của chúng tôi là tạo một hàm tương đương với pow (x, y) bằng cách sử dụng phương pháp lặp lại sẽ hoàn thành nhiệm vụ với độ phức tạp về thời gian là 0 (Nhật ký y).

Hãy lấy một vài ví dụ để hiểu vấn đề,

Đầu vào

x = 7 , y = 3

Đầu ra

343

Hàm lặp lại cho pow (x, y) sẽ lặp lại và cập nhật kết quả cho các giá trị lẻ của y nhân nó với x và cập nhật x thành x2 ở mỗi lần lặp.

Chương trình hiển thị việc thực hiện giải pháp

Ví dụ

#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;
}

Đầu ra

raised to 3 is 343