สมมติว่าเรามีจำนวนบวก n เราต้องตรวจสอบว่า n สามารถเขียนเป็นผลรวมของจำนวนแฟกทอเรียลบวกเฉพาะหรือไม่
ดังนั้น หากอินพุตเท่ากับ n =144 ผลลัพธ์จะเป็น True เป็น 4! +5! =24 + 120 =144
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
-
ข้อเท็จจริง :=1
-
res :=รายการใหม่
-
x :=2
-
ในขณะที่ความจริง <=n ทำ
-
ใส่ fact ท้าย res
-
ข้อเท็จจริง :=ข้อเท็จจริง * x
-
x :=x + 1
-
-
สำหรับฉันในช่วงขนาดความละเอียด -1 ถึง 0, ลดลง 1 ทำ
-
ถ้า n>=res[i] แล้ว
-
n :=n - res[i]
-
-
-
คืนค่า จริง เมื่อ n เท่ากับ 0
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
ตัวอย่าง
class Solution: def solve(self, n): fact = 1 res = [] x = 2 while fact <= n: res.append(fact) fact = fact * x x += 1 for i in range(len(res)-1,-1,-1): if n>=res[i]: n-=res[i] return n==0 ob = Solution() print(ob.solve(144))
อินพุต
144
ผลลัพธ์
True