ในบทความนี้เราจะมาดูโปรแกรมตรวจสอบว่า Number ที่กำหนดเป็น Power ของ k หรือไม่ โดยใช้ Base Changing Method ตัวอย่าง Number = 27, k = 3 แปลงฐานเป็น Base-3 จะได้ 10003 หากหลังแปลงฐานมี Digit 1 เพียงตัวเดียว และที่เหลือเป็น 0 แสดงว่าเป็น Power of k
ขั้นตอนการแก้:
- กำหนด flag = false
- While number > 0 ทำซ้ำข้อ 3-6
- หา digit = number mod k
- ถ้า digit > 1 คืนค่า false
- ถ้า digit == 1 และ flag เป็น true คืนค่า false มิฉะนั้น flag = true
- number = number / k
- คืนค่า true
ตัวอย่างโค้ด C++
#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 digit is not 0 or 1, 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