利用 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 次观看

启动您的 职业生涯

完成课程后获得认证

开始学习
广告