利用 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
广告