TopCoder SRM619: SplitStoneGame
全て要素が1の場合は、LOSE 。
要素数が2つ以下の場合も、LOSE 。
3つ以上要素がある場合は、次のステップで2箇所に加算するため、2より大きい要素が少なくとも2つできる。よって要素が全て1になることはなく、要素数が2以下になるまで勝負がつかないため、要素数の偶奇だけで判定できる。
1ステップごとに要素数が1ずつ減ることから、奇数の場合はWINで、偶数の場合はLOSEになる。
public class SplitStoneGame { public string winOrLose(int[] number) { if (number.All(x => x == 1)) return "LOSE"; if (number.Length <= 2) return "LOSE"; return number.Length % 2 == 1 ? "WIN" : "LOSE"; } }