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

Pythonで回転配列の最大加重和を見つけるプログラム


いくつかの要素の配列があるとします。配列要素が回転する場合、最大加重和を見つける必要があります。配列番号の加重和は、次のように計算できます-

$$ \mathrm{𝑆=\sum _ {\substack{𝑖=1}}^ {n}𝑖∗𝑛𝑢𝑚𝑠[𝑖]} $$

したがって、入力がL =[5,3,4]の場合、出力は26になります。

  • 配列は[5,3,4]、合計は5 + 2 * 3 + 3 * 4 =5 + 6 + 12 =23

  • 配列は[3,4,5]、合計は3 + 2 * 4 + 3 * 5 =3 + 8 + 15 =26(最大)

  • 配列は[4,5,3]、合計は4 + 2 * 5 + 3 * 3 =4 + 10 + 9 =23

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

  • n:=numsのサイズ
  • sum_a:=numsのすべての要素の合計
  • ans:=0〜nの範囲のすべてのiの(nums [i] *(i + 1))のすべての要素の合計
  • cur_val:=ans
  • 0からn-1の範囲のiの場合、do
    • cur_val:=cur_val --sum_a + nums [i] * n
    • ans:=ansとcur_valの最大値
  • 回答を返す

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

def solve(nums):
    n = len(nums)
    sum_a = sum(nums)
    cur_val = ans = sum(nums[i] * (i + 1) for i in range(n))
   
    for i in range(n):
        cur_val = cur_val - sum_a + nums[i] * n
        ans = max(ans, cur_val)
   
    return ans

nums = [5,3,4]
print(solve(nums))

入力

[5,3,4]

出力

26

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

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

  2. nで割った配列乗算のリマインダーを見つけるためのPythonプログラム

    この記事では、以下に示す問題ステートメントの解決策について学習します- 問題の説明 複数の数値と数値入力nが与えられた場合、除算可能なすべての数値にnを掛けた後、余りを出力する必要があります。 アプローチ まず、arr [i]%nのように余りを計算します。次に、この余りに現在の結果を掛けます。 乗算後、オーバーフローを避けるために同じ余りを取ります。これは、モジュラー演算の分配法則に準拠しています。 ( a * b) % c = ( ( a % c ) * ( b % c ) ) % c 例 def findremainder(arr, lens, n):   &n