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

Kiểm tra xem một số có phải là lũy thừa của k hay không bằng cách sử dụng các phương pháp thay đổi cơ số trong C ++

Ở đây chúng ta sẽ thấy một chương trình, nếu một số được cho, một giá trị khác k cũng được đưa ra, chúng ta phải kiểm tra xem số đó có phải là lũy thừa của k hay không. Nhưng chúng ta phải thực hiện phương pháp thay đổi cơ sở để giải quyết vấn đề này. Giả sử một số là 27 và k =3. Khi đó bằng phương pháp đổi cơ số, 27 sẽ là 10003. Ở đây sau khi đổi cơ số nếu chỉ có một lần xuất hiện của chữ số 1 và các chữ số khác là 0, thì số đó là lũy thừa của k .

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau.

Các bước -

  • xác định cờ:=false
  • trong khi số> 0, lặp lại các bước từ 3 đến 6
  • tìm chữ số:=number mod k
  • nếu chữ số> 1, thì trả về false
  • ngược lại khi chữ số là 1, thì nếu cờ là True, trả về false, ngược lại thì flag:=true.
  • bộ số:=number / k.
  • trả về true

Ví dụ

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

Đầu ra

27 is power of 3