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
-
数の偶数因子の合計を見つけるためのPythonプログラム
この記事では、以下に示す問題ステートメントの解決策について学習します- 問題の説明 数値入力nが与えられた場合、タスクは数値の偶数因子の合計を見つけることです。 ここでは、最初にすべての奇妙な要因を排除する必要があります。 入力された数値が奇数の場合、偶数の因数はなく、直接ゼロを返します。それ以外の場合は、以下のコードのアプローチに従います。 以下は実装です- 例 import math # Returns sum of all even factors of n. def sumofFactors(n) : # If n is odd &nbs
-
nで割った配列乗算のリマインダーを見つけるためのPythonプログラム
この記事では、以下に示す問題ステートメントの解決策について学習します- 問題の説明 複数の数値と数値入力nが与えられた場合、除算可能なすべての数値にnを掛けた後、余りを出力する必要があります。 アプローチ まず、arr [i]%nのように余りを計算します。次に、この余りに現在の結果を掛けます。 乗算後、オーバーフローを避けるために同じ余りを取ります。これは、モジュラー演算の分配法則に準拠しています。 ( a * b) % c = ( ( a % c ) * ( b % c ) ) % c 例 def findremainder(arr, lens, n): &n