สมมติว่าเรามีตัวเลข n เราต้องตรวจสอบว่าตัวเลขนั้นเป็นกำลังของ 3 หรือไม่ เช่นถ้าตัวเลขเป็น n = 27 นั่นคือกำลังของ 3 ผลลัพธ์จะเป็น true ถ้า n = 15 จะเป็น false
วิธีการแก้ปัญหา
- เราจะใช้ลอการิทึมในการแก้ปัญหา
- ถ้า [log10(n) / log10(3)] mod 1 == 0 จะเป็นกำลังของสาม มิฉะนั้นไม่ใช่
ตัวอย่างโค้ด
import math
class Solution(object):
def isPowerOfThree(self, n):
"""
:type n: int
:rtype: bool
"""
if not n or n < 0:
return False
return (math.log10(n) / math.log10(3)) % 1 == 0
ob1 = Solution()
print(ob1.isPowerOfThree(27))
print(ob1.isPowerOfThree(15))
print(ob1.isPowerOfThree(9))
อินพุต
27 15 9
เอาต์พุต
true false true