Pythonで整数の配列のすべての数とXORするときに最小の合計を与える数を見つけます
配列Aがあるとすると、(A [0] XOR X)+(A [1] XOR X)+…+ A [n – 1]XORXが可能な限り最小になるような数Xを見つける必要があります。
したがって、入力が[3、4、5、6、7]の場合、出力はX =7、Sum =10
になります。これを解決するには、次の手順に従います-
- 関数search_res()を定義します。これには時間がかかります、n
- 要素:=arr [0]
- 0からarrのサイズまでの範囲のiについては、
- arr [i]>要素の場合、
- 要素:=arr [i]
- arr [i]>要素の場合、
- p:=(要素の底2の対数)+1の整数
- X:=0
- 0からpの範囲のiについては、
- cnt:=0
- 0からnの範囲のjについては、
- arr [j] AND(2 ^ i)がゼロ以外の場合、
- cnt:=cnt + 1
- arr [j] AND(2 ^ i)がゼロ以外の場合、
- cnt>(n / 2)の整数部分がゼロ以外の場合、
- X:=X +(2 ^ i)
- 合計:=0
- 0からnの範囲のiについては、
- sum:=sum +(X XOR arr [i])
- Xと合計を返す
例
理解を深めるために、次の実装を見てみましょう-
from math import log2 def search_res(arr, n): element = arr[0] for i in range(len(arr)): if(arr[i] > element): element = arr[i] p = int(log2(element)) + 1 X = 0 for i in range(p): cnt = 0 for j in range(n): if (arr[j] & (1 << i)): cnt += 1 if (cnt > int(n / 2)): X += 1 << i sum = 0 for i in range(n): sum += (X ^ arr[i]) print("X =", X, ", Sum =", sum) arr = [3, 4, 5, 6, 7] n = len(arr) search_res(arr, n)
入力
[3, 4, 5, 6, 7]
出力
X = 7 , Sum = 10
-
配列の合計を見つけるPythonプログラム
この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 入力として配列が与えられた場合、与えられた配列の合計を計算する必要があります。 ここでは、ブルートフォースアプローチに従うことができます。つまり、リストをトラバースし、各要素を空の合計変数に追加します。最後に、合計の値を表示します。 以下で説明するように、組み込みの合計関数を使用して別のアプローチを実行することもできます。 例 # main arr = [1,2,3,4,5] ans = sum(arr,n) print ('Sum of the array is '
-
数の因子の最小合計を見つけるためのPythonプログラム
この記事では、以下に示す問題ステートメントの解決策について学習します- 問題の説明 入力された数値を指定して、指定された数値の因子の最小合計を求めます。 ここでは、すべての因子とそれに対応する合計を計算し、それらの中から最小値を見つけます。 したがって、数の積の最小合計を見つけるために、積の素因数の合計を見つけます。 これが問題の反復実装です- 例 #iterative approach def findMinSum(num): sum_ = 0 # Find factors of number and add to the sum