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

C++에서 기본 변경 방법을 사용하여 숫자가 k의 거듭제곱인지 확인하십시오.

<시간/>

여기서 우리는 하나의 숫자가 주어지면 다른 값 k도 주어지면 그 숫자가 k의 거듭제곱인지 확인해야 하는 프로그램을 볼 것입니다. 그러나 이 문제를 해결하기 위해서는 베이스 변경 방법을 수행해야 합니다. 숫자가 27이고 k =3이라고 가정합니다. 그러면 밑수 변경 방법에 의해 27은 10003이 됩니다. 여기에서 밑수를 변경한 후 숫자 1이 한 번만 발생하고 나머지는 0이면 그 숫자는 k의 거듭제곱입니다. .

이 문제를 해결하기 위해 다음 단계를 따릅니다.

단계 -

  • 플래그 정의 :=false
  • 숫자> 0일 때 3~6단계 반복
  • 숫자 찾기:=숫자 모드 k
  • 숫자가> 1이면 false를 반환합니다.
  • 그렇지 않으면 숫자가 1일 때 플래그가 True이면 false를 반환하고 그렇지 않으면 flag :=true를 반환합니다.
  • set number :=number / k.
  • 참을 반환

예시

#include <iostream>
#include <cmath>
using namespace std;
bool isPowerOfK(int num, int k) {
   bool flag = false;
   while (num > 0) {
      int digit = num % k; //get current digit in base k
      if (digit > 1) //if the digit is not 0 or 1, then it is not power of k
      return false;
      if (digit == 1) {
         if (flag)
            return false;
         flag = true;
      }
      num /= k;
   }
   return true;
}
int main() {
   int number = 27, K = 3;
   if(isPowerOfK(number, K)){
      cout << number << " is power of " << K;
   } else {
      cout << number << " is not power of " << K;
   }
}

출력

27 is power of 3