ในปัญหานี้ เราได้รับจำนวนเต็ม 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)