TopCoder SRM596: IncrementAndDoubling
(最長bitの高さ - 1) + 立っている bitの個数が答えになる。
いったん2進数文字列に変換すると楽になった。
public class IncrementAndDoubling { public int getMin(int[] desiredArray) { var a = desiredArray.Select(d => Convert.ToString(d, 2)); return a.Max(s => s.Length - 1) + a.Sum(s => s.Count(c => c == '1')); } }