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

Pythonでn個の数値を乗算した後、最後に連続するゼロの数を見つけます


n個の数値を含む配列があるとすると、n個の数値をすべて乗算した後、最後に連続するゼロの数を返す必要があります。

したがって、入力が[200、20、5、30、40、14]の場合、出力は200 * 20 * 5 * 30 * 40 * 14 =336000000として6になり、最後に6つの0があります。

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

  • 関数count_fact_two()を定義します。これにはn

    かかります
  • カウント:=0

  • n mod 2が0の場合、実行

    • count:=count + 1

    • n:=n / 2(整数としての商のみ)

  • 返品数

  • 関数count_fact_five()を定義します。これにはn

    かかります
  • カウント:=0

  • n mod 5が0の場合、実行

    • count:=count + 1

    • n:=n / 5(整数としての商のみ)

  • 返品数

  • メインの方法から、次のようにします-

  • n:=Aのサイズ

  • 2:=0、5:=0

  • 0からnの範囲のiの場合、実行

    • twos:=twos + count_fact_two(A [i])

    • ファイブ:=ファイブ+ count_fact_five(A [i])

  • 2〜5の場合、

    • 2を返す

  • それ以外の場合

    • 5を返す

理解を深めるために、次の実装を見てみましょう-

def count_fact_two( n ):
   count = 0
   while n % 2 == 0:
      count+=1
      n = n // 2
   return count
def count_fact_five( n ):
   count = 0
   while n % 5 == 0:
      count += 1
      n = n // 5
   return count
def get_consecutive_zeros(A):
   n = len(A)
   twos = 0
   fives = 0
   for i in range(n):
      twos += count_fact_two(A[i])
      fives += count_fact_five(A[i])
   if twos < fives:
      return twos
   else:
      return fives
A = [200, 20, 5, 30, 40, 14]
print(get_consecutive_zeros(A))

入力

[200, 20, 5, 30, 40, 14]

出力

6

  1. リスト内の最小数を見つけるPythonプログラム

    この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −リストが表示されます。リストで利用可能な最小の番号を表示する必要があります ここでは、リストを並べ替えて最小の要素を取得するか、組み込みのmin()関数を使用して最小の要素を取得できます。 次に、以下の実装の概念を観察しましょう- 例 list1 = [101, 120, 104, 145, 99] # sorting using built-in function list1.sort() print("Smallest element is:", list1[0]) 出力 Smal

  2. Pythonを使用して数値の階乗を見つける方法は?

    数値の階乗は、1とそれ自体の間のすべての整数の積です。与えられた数の階乗を見つけるために、1からそれ自体までの範囲でforループを形成しましょう。 range()関数は停止値を除外することに注意してください。したがって、停止値は入力数より1大きい値にする必要があります。 範囲内の各数値は、1に初期化される変数fで累積的に乗算されます 例 num=int(input('enter a number')) f=1 for i in range(1,num+1):   f=f*i print ('factorial of', num, '='