Dynamic Programming21 sections · 916 units
Open in Course

Divisor Game - Problem Statement

Division-based moves

Start with nn. Each turn, pick divisor xx of current number where 0<x<n0 < x < n, subtract it. Can't move = lose. dp[1]=falsedp[1] = false (no valid divisor). dp[2]=truedp[2] = true (pick 11, opponent gets 1, loses).

Transition: dp[n]=xn,x<n¬dp[nx]dp[n] = \bigvee_{x | n, x < n} \lnot dp[n-x]. Check all proper divisors. Pattern: dp[n]=(nmod2==0)dp[n] = (n \mod 2 == 0). Even numbers win, odd numbers lose. Proof: even can always subtract 1 (a divisor), odd - 1 = even, opponent wins.