Тема: K - нульових бiтiв. Мова програмування Python.
Знайдiть будь-яке число, яке не менше за 10n i у бiнарному записi якого є вiдрiзок довжиною рiвно з k нулiв, що з обох сторiн оточений одиницями.
Наприклад, число 16310 = 101000112 мiстить у собi вiдрiзок iз трьох нулiв, оточений одиницями. Також це число мiстить у собi вiдрiзок з одного нуля, але не мiстить з двох чи чотирьох нулiв.
Аналіз
Переведемо кілька числ у двійковий вид:
11 - 1011;
213- 11010101;
210 - 11010010;
214 - 11010110.
З наведеного прикладу ми можемо побачити, що першою цифрою завжди буде 1, а остання якщо число у десятковій системі парне то у остання цифра у двійковій системі рівна 0 і якщо не парне то 1.
Тобто ми будемо розглядати тільки непарні числа у десятковому поданні.
Алгоритм
1. Якщо уведене число відповідає усім вимогам: не менше за 10n і є непарне.
2. Переводимо його у двійковий вид.
3. Переводимо отримане подання у двійковому виді у рядковий тип, якщо потрібно.
4. Створюємо рядок з k нулiв.
5. Використовуємо стандартну функцію пошуку входження підрядка що містить k нулiв.