Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonの逆階乗


数aがあるとすると、nの階乗(n!)がaと同じになるようにnを見つける必要があります。ご存知のように、階乗n =n *(n --1)*(n --2)* ... * 1.そのような整数nがない場合は、-1を返します。

したがって、入力がa =120のような場合、出力は5になります。

これを解決するには、次の手順に従います-

  • i:=0、num:=1
  • L:=新しいリスト
  • i
  • i:=numの階乗
  • Lの最後にiを挿入
  • num:=num + 1
  • aがLの場合、
    • (Lのaのインデックス)+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

    1. 数の階乗のためのPythonプログラム

      この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 −nの階乗を計算するタスク。 非負数の階乗は-で与えられます n! = n*n-1*n-2*n-3*n-4*.................*3*2*1 この問題には2つの解決策があります 再帰的アプローチ 反復的なアプローチ アプローチ1-再帰的アプローチ 例 def factorial(n): # recursive solution    if (n==1 or n==0):       return 1   &

    2. Pythonの再帰とバックトラックとは何ですか?

      再帰 0の場合の再帰的ケースです。 バックトラック バックトラッキングは、計算問題の解決策を見つけるための一般的なアルゴリズムであり、解決策の選択肢を段階的に構築し、不可能な解決策につながる可能性のあるトラックの継続的な処理を拒否します。バックトラックを使用すると、以前の選択が間違いであることが判明した場合に元に戻すことができます。 階乗の典型的な実装は次のとおりです- 例 def factorial(n):   #test for a base case      if n==0:        return