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

要素の数を見つけるプログラムを削除して、Pythonで奇数と偶数のインデックス付き要素の合計を等しくすることができます


numsという番号のリストがあるとします。ここで、インデックスiの要素を削除し、結果のリストの偶数のインデックス値の合計が奇数のインデックス値の合計と同じかどうかに応じてtrueまたはfalseを返す関数f(i)について考えてみます。したがって、fがtrueを返すインデックスの数が必要です。

したがって、入力がnums =[6、8、5、2、3]のような場合、出力は2になります。これは、8を削除すると、配列は[6、5、2、3]になり、奇数になります。インデックス要素の合計も8なので、同じです。もう1つの可能な解決策は、2を削除すると、配列は[6、8、5、3]になります。ここでは、奇数と偶数のインデックス付き要素の合計は11なので、同じです。

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

  • n:=numsのサイズ
  • a:=2 x(n + 1)の順序の2次元リストで、それぞれに0を入力します
  • インデックスiと値xnumごとに、実行します
    • a [0、i + 1]:=a [0、i]
    • a [1、i + 1]:=a [1、i]
    • a [i mod 2、i + 1]:=a [i mod 2、i + 1] + x
  • c:=0
  • s:=numsに存在するすべての要素の合計
  • 0からn-1の範囲のiの場合、do
    • e:=a [0、i] --a [0、0] + a [1、n] --a [1、i + 1]
    • e *2がs--nums[i]と同じ場合、
      • c:=c + 1
  • return c

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

def solve(nums):
   n = len(nums)
   a = [[0] * (n + 1), [0] * (n + 1)]
   for i, x in enumerate(nums):
      a[0][i + 1] = a[0][i]
      a[1][i + 1] = a[1][i]
      a[i % 2][i + 1] += x

   c = 0
   s = sum(nums)
   for i in range(n):
      e = a[0][i] - a[0][0] + a[1][n] - a[1][i + 1]
      if e * 2 == s - nums[i]:
         c += 1
   return c

nums = [6, 8, 5, 2, 3]
print(solve(nums))

入力

[6, 8, 5, 2, 3]

出力

2

  1. 数の奇数因子の合計を見つけるためのPythonプログラム

    この記事では、以下に示す問題ステートメントの解決策について学習します- 問題の説明 数値入力nが与えられた場合、タスクは数値の奇数因子の合計を見つけることです。 ここでは、最初にすべての偶数の要因を排除する必要があります。 すべての偶数因子を削除するために、nを2で割り切れるまで繰り返し除算します。このステップの後、数の奇数因子のみを取得します。 以下は実装です- 例 import math def sumofoddFactors( n ):    #prime factors    res = 1    # ignore e

  2. 数の偶数因子の合計を見つけるためのPythonプログラム

    この記事では、以下に示す問題ステートメントの解決策について学習します- 問題の説明 数値入力nが与えられた場合、タスクは数値の偶数因子の合計を見つけることです。 ここでは、最初にすべての奇妙な要因を排除する必要があります。 入力された数値が奇数の場合、偶数の因数はなく、直接ゼロを返します。それ以外の場合は、以下のコードのアプローチに従います。 以下は実装です- 例 import math # Returns sum of all even factors of n. def sumofFactors(n) :    # If n is odd   &nbs