สมมติว่าเรามีตัวเลข n เราต้องตรวจสอบว่าเป็นไปได้หรือไม่ที่จะแทน n เป็นผลรวมของยกกำลังสามตัวหรือไม่ จำนวนเต็ม y ถูกกล่าวว่าเป็นกำลังสามหากมีจำนวนเต็ม x โดยที่ y =3^x
ดังนั้น หากอินพุตเท่ากับ n =117 ผลลัพธ์จะเป็น True เพราะ 117 =3^4 + 3^3 + 3^2 + =81 + 27 + 9
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
-
สำหรับฉันในช่วง 16 ถึง 0 ลดลง 1 ทำ
-
ถ้า n>=3^i แล้ว
-
n :=n - 3^i
-
-
-
ถ้า n> 0 แล้ว
-
คืนค่าเท็จ
-
-
คืนค่า True
ตัวอย่าง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
def solve(n): for i in range(16, -1, -1): if n >= pow(3,i): n -= pow(3,i) if n > 0: return False return True n = 117 print(solve(n))
อินพุต
117
ผลลัพธ์
True