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

Pythonで最後にn個の0を持つように数mを見つけるプログラム


数nがあるとします。 mの階乗が少なくともn個の0を持つように、最小の数mを見つける必要があります。

したがって、入力がn =2の場合、出力は10になるため、出力は10になります。 =3628800および9! =362880、ゼロが2つある最小数は10です。

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

  • 関数count_fives()を定義します。これにはnがかかります
  • cnt:=0
  • n> 0の場合、do
    • n:=(n / 5)のフロア
    • cnt:=cnt + n
  • return cnt
  • メインの方法から、次の手順を実行します-
  • 左:=1
  • 右:=5 ^ 24
  • 右-左>5、実行
    • mid:=フロア((右+左)/ 10)* 5
    • fives:=count_fives(mid)
    • 5がnと同じ場合、
      • 右:=半ば
      • 左:=右-5
      • ループから抜け出す
    • それ以外の場合、ファイブが
    • 左:=中央
  • それ以外の場合、
    • 右:=半ば
  • 右に戻る
  • 理解を深めるために、次の実装を見てみましょう-

    def count_fives(n):
       cnt = 0
       while n > 0:
          n = n // 5
          cnt += n
       return cnt
    
    def solve(n):
       left = 1
       right = 5**24
       while right - left > 5:
          mid = int((right + left) / 10) * 5
          fives = count_fives(mid)
          if fives == n:
             right = mid
             left = right - 5
             break
          elif fives < n:
             left = mid
          else:
             right = mid
       return right
    
    n = 2
    print(solve(n))

    入力

    2
    

    出力

    10

    1. Pythonで範囲内のノード数を見つけるプログラム

      BSTがあり、左と右の境界lとrもあるとすると、lとrの間に値が存在するルート内のすべてのノードの数を見つける必要があります。 したがって、入力が次のような場合 l =7、r =13の場合、8、10、12の3つのノードがあるため、出力は3になります。 これを解決するために、次の手順に従います- スタック:=スタックと最初にルートを挿入し、カウント:=0 スタックが空でないときに、実行します node:=スタックの最上位要素、およびポップ要素 ノードがnullでない場合、 l<=ノードのデータ<=rの場合、 count:=count + 1

    2. リスト内で最大数を見つけるPythonプログラム

      この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 与えられたリスト入力では、与えられたリストの中で最大の数を見つける必要があります。 ここでは、2つのアプローチについて説明します 並べ替え手法の使用 組み込みのmax()関数を使用する アプローチ1-組み込みのsort()関数を使用する 例 list1 = [18, 65, 78, 89, 90] list1.sort() # main print("Largest element is:", list1[-1]) 出力 Largest element is: