Pythonの数値リストから0をk回変更して最小の合計を見つけるプログラムはありますか?
numsと呼ばれる数値のリストと別の値kがあるとします。次の操作をk回行う必要があります。リストから任意の数を選択します。その数値の2進表現で、0のビットを選択して1にします。最後に、k回の演算を実行した後、すべての数値の可能な最小の合計を返す必要があります。答えが高すぎる場合は、結果モード10 ^ 9+7を返します。
したがって、入力がnums =[4、7、3] k =2の場合、4のバイナリ表現は100、3は011、7は111であるため、出力は17になります。 2ビットの場合、4ビットを設定して111(7)にすることができます。その場合、合計は7 + 7 + 3=17になります。
これを解決するには、次の手順に従います。
-
ans:=0、i:=0
-
kがゼロ以外の場合、実行
-
numsのnごとに、実行します
-
(n / 2 ^ i)が偶数の場合、
-
ans:=ans + 2 ^ i
-
k:=k-1
-
kが0と同じ場合、
-
ループから出てきます
-
-
-
-
i:=i + 1
-
-
return(ans + numsのすべての要素の合計)mod m
理解を深めるために、次の実装を見てみましょう。
例
class Solution: def solve(self, nums, k): m = (10 ** 9 + 7) ans = 0 i = 0 while k: for n in nums: if (n >> i) & 1 == 0: ans += 1 << i k -= 1 if k == 0: break i += 1 return (ans + sum(nums)) % m ob = Solution() nums = [4, 7, 3] k = 2 print(ob.solve(nums, k))
入力
[4, 7, 3], 2
出力
17
-
リストの累積合計を見つけるPythonプログラム
この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −リストが与えられたので、累積合計でリストを作成する必要があります。 次に、以下の実装のソリューションを見てみましょう- 例 # cumulative sum def Cumulative(l): new = [] cumsum = 0 for element in l: cumsum += element new.append(cumsum) &
-
リスト内の要素の合計を見つけるPythonプログラム
この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 入力としてリストが与えられた場合、与えられたリストの合計を計算する必要があります。 ここでは、考慮すべき2つのアプローチがあります。つまり、組み込み関数を使用する方法と、ブルートフォースアプローチを使用する方法です。 アプローチ1-組み込み関数の使用 例 # main arr = [1,2,3,4,5] ans = sum(arr) print ('Sum of the array is ',ans) 出力 15 すべての変数と関数はグローバルスコープで宣言されて