超直方体セルの値の合計を見つけるPythonプログラム
超直方体は、k次元の長方形です。各次元の長さは、n1、n2、n3、.....、nmで表すことができます。超直方体のセルは(p、q、r、...)としてアドレス指定され、(p、q、r、...)のgcdと同等の値が含まれています。ここで、1 <=p <=n1、1 <=q<=n1などです。私たちのタスクは、すべてのセル値gcd(p、q、r、...)の合計を決定することです。結果はモジュロ10^9+7として返されます。インデックス付けは1からnまで行われます。
したがって、入力がinput_arr =[[2、2]、[5、5]]のようである場合、出力は[5、37]
になります。入力として与えられた2つのインスタンスがあり、これら2つの与えられたインスタンスの合計を決定する必要があります。いずれの場合も、超直方体は4x4の2次元長方形であり、長さが指定されています。アドレス(p、q)とgcd(p、q)は次のようになります-
(p,q) value gcd(p,q) (1, 1) (1, 2) 1 1 (2, 1) (2, 2) 1 2
gcdsの合計=1+ 1 + 1 + 2 =5
2番目の例では-
(p,q) value gcd(p,q) sum(gcd of row i) (1, 1) (1, 2) (1, 3) (1, 4) (1, 5) 1 1 1 1 1 = 5 (2, 1) (2, 2) (2, 3) (2, 4) (2, 5) 1 2 1 2 1 = 7 (3, 1) (3, 2) (3, 3) (3, 4) (3, 5) 1 1 3 1 1 = 7 (4, 1) (4, 2) (4, 3) (4, 4) (4, 5) 1 2 1 4 1 = 9 (5, 1) (5, 2) (5, 3) (5, 4) (5, 5) 1 1 1 1 5 = 9
gcdsの合計=5+ 7 + 7 + 9 + 9 =37
これを解決するには、次の手順に従います-
-
関数coeff_find()を定義します。これにはtest_instanceが必要です。i
- 値:=1
- test_instanceのkごとに、
- value:=value *(k / i)のfloat値
- 戻り値
- メインのメソッド/関数から、次の手順を実行します-
- 出力:=新しいリスト
- input_arrのtest_instanceごとに、
- min_value:=test_instanceの最小値
- total_value:=0
- temp_dict:=新しいマップ
- min_valueから0の範囲のiの場合、1ずつ減らします。
- p:=coeff_find(test_instance、i)
- q:=i
- q <=min_valueの間、do
- q:=q + i
- qがtemp_dictに存在する場合、
- p:=p --temp_dict [q]
- temp_dict [i]:=p
- total_value:=total_value + temp_dict [i] * i
- リスト出力の最後に(total_value mod(10 ^ 9 + 7))を追加します
- 出力を返す
例
理解を深めるために、次の実装を見てみましょう-
def coeff_find(test_instance, i): value = 1 for k in test_instance: value *= k // i return value def solve(input_arr): output = [] for test_instance in input_arr: min_value = min(test_instance) total_value = 0 temp_dict = {} for i in range(min_value, 0, -1): p = coeff_find(test_instance, i) q = i while q <= min_value: q += i if q in temp_dict: p -= temp_dict[q] temp_dict[i] = p total_value += temp_dict[i]*i output.append(total_value % (10**9 + 7)) return output print(solve([[2, 2], [5, 5]]))
入力
[[2, 2], [5, 5]]
出力
[5, 37]
-
Pythonプログラムで配列の合計を見つける
この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −配列の合計を計算するために必要な配列が与えられます。 合計を取得するために各インデックスで配列と要素全体をトラバースするブルートフォースアプローチについては、以下で説明します。合計を取得するための各インデックスについては、以下で説明します。 例 # sum function def sum_(arr,n): # using built-in function return(sum(arr)) # main arr = [11,22,33,44,55,66
-
配列の合計を見つけるPythonプログラム
この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 入力として配列が与えられた場合、与えられた配列の合計を計算する必要があります。 ここでは、ブルートフォースアプローチに従うことができます。つまり、リストをトラバースし、各要素を空の合計変数に追加します。最後に、合計の値を表示します。 以下で説明するように、組み込みの合計関数を使用して別のアプローチを実行することもできます。 例 # main arr = [1,2,3,4,5] ans = sum(arr,n) print ('Sum of the array is '