Pythonで合計値がkで割り切れるN個の自然数からペアの数を見つけるプログラム
数nと別の値kがあるとすると、最初のN個の自然数を持つ配列Aがあるとすると、Aから要素A[i]とA[j]のペアの総数を見つける必要があります。
したがって、入力がn =10 k =4の場合、合計が4で割り切れる10のペアがあるため、出力は10になります。[(1,3)、(1,7)、(2,6) 、(2,10)、(3,5)、(3,9)、(4,8)、(5,7)、(6,10)、(7,9)]
これを解決するには、次の手順に従います-
- m:=(n / k)のフロア、r:=n mod k
- b:=新しい地図
- 0からk-1の範囲のiの場合、do
- b [i]:=m
- m * k + 1からnの範囲のiについては、
- j:=i mod k
- b [j]:=b [j] + 1
- c:=0
- 0からkの範囲のiについては、
- i1:=i
- i2:=(k-i)mod k
- i1がi2と同じ場合、
- c:=c + b [i] *(b [i] -1)
- それ以外の場合、
- c:=c + b [i1] *(b [i2])
- c/2のリターンフロア
例
理解を深めるために、次の実装を見てみましょう-
def solve(n, k): m = n // k r = n % k b = {} for i in range(k) : b[i] = m for i in range(m*k+1, n+1) : j = i % k b[j] = b[j] + 1 c = 0 for i in range(k) : i1 = i i2 = (k - i) % k if i1 == i2 : c = c + b[i] * (b[i]-1) else : c = c + b[i1] * (b[i2]) return c//2 n = 10 k = 4 print(solve(n, k))
入力
4, 27
出力
10
-
Pythonのサブツリーのノード値の合計から最小値を見つけるプログラム
すべてのノードに1からnまでの番号が付けられたツリーがあるとします。各ノードには整数値が含まれています。ここで、ツリーからエッジを削除する場合、2つのサブツリーのノード値の合計の差を最小限に抑える必要があります。そのようなサブツリー間の最小の違いを見つけて返す必要があります。ツリーはエッジのコレクションとして提供され、ノードの値も提供されます。 したがって、入力がn =6の場合、edge_list =[[1、2]、[1、3]、[2、4]、[3、5]、[3、6]]、values =[15、 25、15、55、15、65]の場合、出力は0になります。 エッジ(1,2)を削除すると、重みの
-
Pythonプログラムで数の偶数因子の合計を見つける
この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −数値が与えられているので、数値のすべての偶数因子の合計を表示する必要があります。 アプローチ 数値が奇数かどうかを確認し、偶数の因子がないため、0を返します。 数が偶数の場合、計算を実行します。 20を除く他のすべての項は、偶数の因数の合計を生成するために乗算されます。 偶数因子のすべての奇数を削除するために、1である20を無視します。このステップの後、偶数因子のみを取得しました。 2は私たちが利用できる唯一の素数であることに注意してください。 次に、以下の実装を見てみましょう- 例 # math