Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 pow(x, y)에 대한 반복 O(Log y) 함수 작성

<시간/>

이 문제에서는 두 개의 정수 x와 y가 주어집니다. 우리의 작업은 0(Log y)의 시간 복잡도에서 작업을 완료하는 반복적인 접근 방식을 사용하여 pow(x,y)와 동일한 함수를 만드는 것입니다.

문제를 이해하기 위해 몇 가지 예를 들어보겠습니다.

입력

x = 7 , y = 3

출력

343

pow(x,y)의 반복 함수는 x를 곱한 y의 홀수 값에 대한 결과를 반복 및 업데이트하고 모든 반복에서 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