タイトル説明
アリスとボブは一緒にゲームをし、交代でゲームをします。アリスは最初にゲームを始めました。当初、黒板には数字のNがありました。各プレイヤーのラウンドで、プレイヤーは次の操作を実行する必要があります
。0<x <NおよびN%x == 0を満たす任意のxを選択します。
黒板の数字NをN-xに置き換えます。
プレイヤーがこれらの操作を実行できない場合、彼らはゲームに負けます。
アリスがゲームに勝った場合にのみTrueを返し、それ以外の場合はFalseを返します。両方のプレーヤーが最高の状態でゲームに参加すると仮定します。
例
示例 1:
输入:2
输出:true
解释:爱丽丝选择 1,鲍勃无法进行操作。
示例 2:
输入:3
输出:false
解释:爱丽丝选择 1,鲍勃也选择 1,然后爱丽丝无法进行操作。
促す
1 <= N <= 1000
問題解決のアイデア
典型的な数学的思考の問題の場合、コードは1行だけです
。Aが奇数を取得した後、NXを1回実行すると、確実にNが偶数になります。現時点では、BはAを取得して奇数を取得するために-1を必要とします。繰り返しますが、ループでは、Bが最初に2を取得します。A
は負けます。アリスが奇数を取得すると、彼女は負けます。偶数を取得すると、-1が勝ちます。
コード
bool divisorGame(int N){
return !(N&1);
}