Static class Program { public static IEnumerable<uint> Digits(this uint X, bool Reverse = true) { do { yield return X % 10; } while ((X /= 10) != 0); }
Если три нуля значащие, значит число начинается с единицы. Поскольку любое число в развернутой записи есть сумма произведений, каждое из которых представляет собой произведение цифры, находящейся на n-й позиции на основание системы счисления, возведенной в степень n-1, то понятно, что чем больше по величине будут цифры в старших разрядах, тем больше будет само число. В применении к двоичной системе это означает, что слева должны стоять все единицы, а справа - нули. Получаем 11000(2)=1х2^4+1x2^3=16+8+=24(10) - тут символ ^ означает возведение в степень. ответ: 24
{
public static IEnumerable<uint> Digits(this uint X, bool Reverse = true)
{
do { yield return X % 10; } while ((X /= 10) != 0);
}
static uint ToUnsignedInt32(this IEnumerable<uint> Digits)
{
return Digits.Reverse().Aggregate((a, d) => a * 10 + d);
}
static void Main()
{
Console.WriteLine(
uint.Parse(Console.ReadLine())
.Digits()
.Where(d => d % 2 == 1)
.ToUnsignedInt32());
Console.ReadKey();
}
}
В применении к двоичной системе это означает, что слева должны стоять все единицы, а справа - нули.
Получаем 11000(2)=1х2^4+1x2^3=16+8+=24(10) - тут символ ^ означает возведение в степень.
ответ: 24