Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ตรวจสอบว่าตัวเลขเป็นกำลังของ k หรือไม่โดยใช้วิธีการเปลี่ยนฐานใน C++


ที่นี่เราจะเห็นโปรแกรม ถ้าให้ตัวเลขหนึ่ง ให้ค่า 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