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

ตรวจสอบว่าเลขเป็นกำลังของ 3 หรือไม่ใน C++

ในปัญหานี้ เราได้รับจำนวนเต็ม N งานของเราคือการตรวจสอบว่า N เป็นกำลังของ 3 หรือไม่

ตัวอย่างเพื่อเข้าใจปัญหา

Input: N = 729 Output: Yes

เพราะ 36 = 729

วิธีการแก้ปัญหา

วิธีที่มีประสิทธิภาพคือตรวจสอบว่า N หาร 1162261467 (ซึ่งคือ 319 ค่ากำลังของ 3 สูงสุดที่เก็บใน int 32-bit ได้) ลงตัวหรือไม่

ตัวอย่างโค้ด

#include <iostream>
using namespace std;

bool isPowerOf3(int n) {
    if (n <= 0) return false;
    return 1162261467 % n == 0;
}

int main() {
    int n = 27;
    if (isPowerOf3(n)) cout << "The number is a power of 3";
    else cout << "The number is not a power of 3";
    return 0;
}

ผลลัพธ์

The number is a power of 3

วิธีอื่น: หารด้วย 3 ซ้ำๆ จนเหลือ 1 (คล้ายวิธีเช็คกำลังของ 4)