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

ตรวจสอบว่า Number เป็น Power of k ด้วย Base Changing Method ใน C++

ในบทความนี้เราจะมาดูโปรแกรมตรวจสอบว่า Number ที่กำหนดเป็น Power ของ k หรือไม่ โดยใช้ Base Changing Method ตัวอย่าง Number = 27, k = 3 แปลงฐานเป็น Base-3 จะได้ 10003 หากหลังแปลงฐานมี Digit 1 เพียงตัวเดียว และที่เหลือเป็น 0 แสดงว่าเป็น Power of k

ขั้นตอนการแก้:

  1. กำหนด flag = false
  2. While number > 0 ทำซ้ำข้อ 3-6
  3. หา digit = number mod k
  4. ถ้า digit > 1 คืนค่า false
  5. ถ้า digit == 1 และ flag เป็น true คืนค่า false มิฉะนั้น flag = true
  6. number = number / k
  7. คืนค่า 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