利用 C++ 的基數轉換方法檢查一個數是否為 k 的冪


這裡我們將看到一個程式,如果給了一個數,另一個值 k 也給定了,我們必須檢查這個數是否是 k 的冪。但是我們必須執行基數轉換方法才能解決這個問題。假設一個數是 27,k = 3。然後透過基數轉換方法,27 將變成 10003。這裡在轉換基數後,如果只有數字 1,而其他數字都是 0,那麼該數字就是 k 的冪。

要解決這個問題,我們將遵循以下步驟。

步驟 

  • 定義識別符號 := false
  • 當數字> 0 時,重複步驟 3 到 6
  • 查詢數字 := 數模 k
  • 如果數字> 1,則返回 false
  • 否則當數字為 1 時,如果識別符號為真,則返回假,否則識別符號 := 真。
  • 將數字 := 數字 / 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

更新時間:2019-10-22

155 次觀看

啟動您的 職業生涯

完成課程後獲得認證

開始學習
廣告