Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python의 역 계승

<시간/>

숫자가 있다고 가정하면 n(n!)의 계승이 n과 같도록 n을 찾아야 합니다. 우리가 알고 있듯이 계승 n =n * (n - 1) * (n - 2) * ... * 1. 그러한 정수 n이 없으면 -1을 반환합니다.

따라서 입력이 a =120과 같으면 출력은 5가 됩니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • i :=0, 숫자 :=1
  • L:=새 목록
  • 나는 <, 하는 동안
    • i :=num의 계승
    • L 끝에 i 삽입
    • 숫자 :=숫자 + 1
  • 가 L에 있으면
    • (L의 인덱스) +1을 반환
  • 그렇지 않으면
    • 반환 -1

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

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

입력

120

출력

5