Pythonで指定された秒を加算または減算するだけで12時に戻ることができるかどうかを確認します
n個の異なる2番目の値の配列があるとします。与えられた秒を足したり引いたりするだけで、12時から始めて12に戻ることができるかどうかをチェックする必要があります。指定されたすべての秒を1回だけ使用でき、秒を加算または減算できます。
したがって、入力が秒=[40,90,50]の場合、出力はTrueになります。これは、40を加算し、次に90を減算し、次に50を加算できるためです。
これを解決するには、次の手順に従います-
- size:=2 ^(秒の長さの配列)
- 範囲0からサイズ-1のcの場合、実行
- 追加:=0
- 0から秒のサイズ-1までの範囲のjの場合、実行
- c AND(2 ^ j)がゼロ以外の場合、
- 追加:=追加+秒[j]
- それ以外の場合、
- add:=add --seconds [j]
- c AND(2 ^ j)がゼロ以外の場合、
- addが(24 * 60)で割り切れる場合、
- Trueを返す
- Falseを返す
例
理解を深めるために、次の実装を見てみましょう-
def solve(seconds): size = 2**len(seconds) for c in range(size): add = 0 for j in range(len(seconds)) : if c & (1 << j): add += seconds[j] else: add -= seconds[j] if add % (24 * 60) == 0: return True return False seconds = [40,90,50] print(solve(seconds))>
入力
[40,90,50]
出力
True
-
Pythonで島で生き残ることが可能かどうかを確認する
島があるとしましょう。その場所には店舗が1つしかないため、この店舗は日曜日を除いて常に営業しています。入力として次の値があります- N(誰かが毎日購入できる食品の最大数) S(誰かが生き残るために必要な日数) M(生き残るために毎日必要な食物の数) 月曜日で、次のS日間生き残る必要がある場合。次のS日間生き残ることができるように、食料を購入するために必要な最小日数を見つけることができれば、生き残ることができるかどうかを確認する必要があります。 したがって、入力がS =12、N =24、M =3の場合、出力はTrueになり、食料を購入する必要がある最小日数は2になります。これは、8
-
PythonでベクトルAを回転させ、それにベクトルCを追加することで、ベクトルBに到達できるかどうかを確認します。
2D平面に3つのベクトルx、y、zがあるとします。ベクトルxからベクトルyを90度(時計回り)回転させるか、必要に応じて何度でもzを追加して、ベクトルyを取得できるかどうかを確認する必要があります。 したがって、入力がx =(-4、-2)y =(-1、2)z =(-2、-1)のような場合、位置を取得するためにxにzを追加できるため、出力はTrueになります。 (-2、-1)、次に時計回りに90°回転して(-1、2)を取得します。 これを解決するには、次の手順に従います- 関数util()を定義します。これにはp、q、r、sが必要です d:=r * r + s * s dが0