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

Giai thừa nghịch đảo trong Python

Giả sử chúng ta có một số a, chúng ta phải tìm n, sao cho giai thừa của n (n!) Giống với a. Như chúng ta đã biết, giai thừa n =n * (n - 1) * (n - 2) * ... * 1. Nếu không có số nguyên n như vậy thì trả về -1.

Vì vậy, nếu đầu vào là a =120, thì đầu ra sẽ là 5.

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

  • i:=0, num:=1
  • L:=một danh sách mới
  • while i
  • i:=giai thừa của num
  • chèn i vào cuối L
  • num:=num + 1
  • nếu a nằm trong L, thì
    • trả về (chỉ số của a trong L) +1
  • nếu không,
    • trả về -1
  • Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

    Ví dụ

    import math
    class Solution:
       def solve(self, a):
          i,num=0,1
          L=[]
          while i < a :
             i=math.factorial(num)
             L.append(i)
             num+=1
             if a in L :
                return L.index(a)+1
             else :
                return -1
    ob = Solution()
    print(ob.solve(120))

    Đầu vào

    120

    Đầu ra

    5