Computer >> Máy Tính >  >> Lập trình >> Python

Chương trình kiểm tra một số có thể được viết dưới dạng tổng các số giai thừa riêng biệt hoặc không bằng Python

Giả sử chúng ta có một số dương n, chúng ta phải kiểm tra xem n có thể được viết dưới dạng tổng các số giai thừa dương duy nhất hay không.

Vì vậy, nếu đầu vào là n =144, thì đầu ra sẽ là Đúng, là 4! + 5! =24 + 120 =144

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • sự thật:=1

  • res:=một danh sách mới

  • x:=2

  • trong khi thực tế <=n, thực hiện

    • chèn dữ kiện vào cuối res

    • fact:=fact * x

    • x:=x + 1

  • đối với tôi trong phạm vi kích thước res -1 đến 0, giảm 1, thực hiện

    • nếu n> =res [i], thì

      • n:=n - res [i]

  • trả về true khi n giống 0

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

Ví dụ

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))

Đầu vào

144

Đầu ra

True