Pythonでセット要素除去ゲームの勝者を見つけるためのプログラム
最初のn個の自然数{1..n}のセットがあるとします。アマルとビマルがゲームをしています。ゲームのルールは以下のとおりです
-
アマルは常に最初にプレイします
-
各移動中に、現在のプレーヤーはセットから素数pを選択します。次に、プレーヤーはpとそのすべての倍数をセットから削除します。
-
動きのない人は誰でもゲームに負けます。nがあれば、勝者の名前を見つける必要があります。
したがって、入力がn =5の場合、初期セットは{1,2,3,4,5}であるため、出力はAmalになります。ここで、Amalが数値p =2を選択し、セットから2、4を削除すると、現在のセットは{1,3,5}になり、2つの素数が残っているため、Bimalはそれらのいずれかを選択できますが、残りの要素はありません。削除し、最後にアマルは別の素数を削除してゲームに勝ちます。
これを解決するには、次の手順に従います-
- primes:=サイズ100000の配列、最初はすべて0
- ふるい:=サイズ100000の配列、最初はすべて0
- 2〜99999の範囲のiの場合は、
- sieve [i]が0と同じ場合、
- primes [i]:=primes [i-1] +1
- iから100000の範囲のjについては、各ステップでiずつ更新します。
- ふるい[j]:=i
- それ以外の場合、
- primes [i]:=primes [i-1]
- sieve [i]が0と同じ場合、
- メインの方法から次のようにします-
- primes [n]が奇数の場合は「Bimal」を返し、それ以外の場合は「Amal」を返します
例
理解を深めるために、次の実装を見てみましょう-
primes = [0 for i in range(100001)] sieve = [0 for i in range(100001)] for i in range(2, 100000): if sieve[i] == 0: primes[i] = primes[i-1]+1 for j in range(i, 100001, i): sieve[j] = i else: primes[i] = primes[i-1] def solve(n): return "Bimal" if primes[n] % 2 == 0 else "Amal" n = 5 print(solve(n))
入力
5
出力
Amal
-
配列内の最大の要素を見つけるPythonプログラム
この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −配列が与えられたので、配列の最大要素を計算する必要があります。 ここでは、ループ全体をトラバースして最大の要素を計算し、要素を取得するブルートフォースアプローチを使用します。 以下の実装を観察できます。 例 # largest function def largest(arr,n): #maximum element max = arr[0] # traverse the whole loop for
-
配列内の最大の要素を見つけるPythonプログラム
この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 入力として配列を指定すると、配列内で最大の要素を見つける必要があります。 アプローチ maxを最初の要素として初期化します。 この後、指定された配列を2番目の要素から最後までトラバースします。 トラバースされたすべての要素について、現在のmaxの値と比較します maxより大きい場合、maxが更新されます。 それ以外の場合、ステートメントはを超えます 以下の実装を見てみましょう- 例 def largest(arr,n): #maximal element