TopCoder SRM575: TheNumberGameDivOne
x が小さい場合について、TheNumberGameDivTwo の方法で調べると
x が偶数かつ x が \( 2^{2*k+1} \) ではない場合だけ先手必勝となることが分かる。
public class TheNumberGameDivOne { public string find(long n) { return Solve(n) ? "John" : "Brus"; } public bool Solve(long x) { if (x % 2 == 0) { int pow = 0; while (x % 2 == 0) { x /= 2; pow++; } if (x == 1 && pow % 2 == 1) return false; return true; } else { return false; } } }