ที่นี่เราจะเห็นโปรแกรม ถ้าให้ตัวเลขหนึ่ง ให้ค่า k อีก เราต้องตรวจสอบว่าตัวเลขนั้นเป็นกำลังของ k หรือไม่ แต่เราต้องใช้วิธีการเปลี่ยนฐานเพื่อแก้ปัญหานี้ สมมติว่าตัวเลขคือ 27 และ k =3 จากนั้นโดยวิธีเปลี่ยนฐาน 27 จะเป็น 10003 ในที่นี้หลังจากเปลี่ยนฐานแล้วหากมีตัวเลข 1 เกิดขึ้นเพียง 1 รายการและส่วนอื่นๆ เป็น 0 ตัวเลขจะเป็นกำลังของ k .
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้
ขั้นตอน −
- กำหนดแฟล็ก :=false
- ในขณะที่ตัวเลข> 0 ทำซ้ำขั้นตอนที่ 3 ถึง 6
- ค้นหาหลัก :=หมายเลข mod k
- ถ้าเป็นตัวเลข> 1 ให้คืนค่าเท็จ
- มิฉะนั้น เมื่อตัวเลขเป็น 1 ดังนั้นหากแฟล็กเป็น True ให้คืนค่าเท็จ มิฉะนั้นแฟล็ก :=true
- กำหนดจำนวน :=จำนวน / 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