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

Pythonで与えられた素数を乗算することにより、配列の要素を等しくできるかどうかを確認します


2つの配列があり、1つはnumsで、もう1つは素数であるとします。素数配列から1つ以上の素数を乗算することにより、numsのすべての要素を等しくすることが可能かどうかを確認する必要があります。

したがって、入力がnums =[25、100] primes =[2、5]の場合、25に2を2回掛けて100を得ることができるため、出力はTrueになります。

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

  • lcm_arr:=numsのすべての要素のLCM
  • 範囲0からnums-1のサイズのiの場合、do
    • val:=lcm_arr / nums [i]
    • 素数のサイズが0でなく、valが1でない場合、
      • val mod primes [0]が0の場合、do
        • val:=val / primes [j]
    • valが1と同じでない場合、
      • Falseを返す
  • Trueを返す

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

from math import gcd
def array_lcm(nums):
   ans = nums[0]
   for i in range(1,len(nums)):
      ans = (nums[i]*ans)/gcd(nums[i], ans)
   return ans
def solve(nums, primes):
   lcm_arr = array_lcm(nums)
   for i in range(len(nums)):
      val = lcm_arr/nums[i]
      for j in range(len(primes) and val != 1):
         while (val % primes[j] == 0):
            val = val/primes[j]
      if (val != 1):
         return False
   return True
nums = [25, 100]
primes = [2, 5]
print(solve(nums, primes))

入力

[25, 100], [2, 5]

出力

True

  1. Pythonでリストの文字列要素を連結することにより、指定された文字列を形成できるかどうかを確認します

    リストに存在する多数の文字列から必要な文字列を形成できるかどうかを確認する必要がある場合があります。また、必要な文字列を取得するために結合する必要のある文字列がリストにどのような順序で存在するかは重要ではありません。 順列あり itertoolsから、さまざまな順序でリスト内の文字列の可能な組み合わせを提供する順列関数を使用できます。与えられた組み合わせが必要な文字列と一致するとすぐに、文字列を形成できると結論付けます。 例 from itertools import permutations chk_str = 'balloon' Alist = ['fly

  2. Pythonでの等しい配列要素IIへの最小移動

    空でない整数配列があるとすると、すべての配列要素を等しくするために必要な最小移動数を見つける必要があります。ここで、移動は選択した要素をインクリメントまたはデクリメントします。したがって、配列が[1、2、3]の場合、出力は2になり、1は2にインクリメントされ、3は2にデクリメントされます。 これを解決するには、次の手順に従います- 配列番号を並べ替える カウンターを0に設定 numsのiの場合は、 カウンター:=カウンター+絶対値(i – nums[numsの長さ/2]) リターンカウンター 例(Python) 理解を深めるために、次の実装を見てみましょう- class Solut