C♯の勉強

C♯4.0 で TopCoder の過去問を解きます。

TopCoder SRM597: LittleElephantAndDouble

それぞれの要素について、2の倍数でなくなるまで2で割って、全ての要素が同じ値になるかどうかを判定する。

  1. 2進数文字列で変換
  2. 末尾の 0 を除去
  3. 全て同じ文字列になるかの判定

で実装してみた。

public class LittleElephantAndDouble {
    public string getAnswer(int[] A) {
        return A.Select(a => Convert.ToString(a, 2))
            .Select(s => s.TrimEnd('0'))
            .Distinct()
            .Count() == 1 ? "YES" : "NO";
    }
}