Ограничения: время – 100ms/100ms, память – 256MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод 
Послать решение Blockly Посылки Темы Где Обсудить (0)
Дано двоичное представление натурального числа в виде строки из 0 и 1 длиной до 25 цифр. Строка всегда начинается с цифры 1.
Нужно получить значение числа в регистре,
для операций над которым есть несколько команд. Изначально в регистре содержится число 0.
Для написания программы вы можете использовать следующие блоки, заданные в категории "Робот":

Первые три команды выполняют умножение на 2, добавление 1 к значению в регистре и вычитание 1 соответственно.
Четвертая команда позволяет длину строки с двоичным представлением.
Пятая команда позволяет узнать `i`-ю цифру двоичного представления: 0 или 1. Если `i<1` или `i` больше длины строки,
то команда возвращает -1.
Вы можете использовать также команды ветвления, циклов, арифметических и логических вычислений, сравнений, переменные и константы,
которые находятся в категориях "Логические", "Циклы", "Математика" и "Переменные".

Для создания переменной в категории "Переменные" нужно щелкнуть по кнопке "Создать переменную" и ввести её название, например, "a".
После этого в категории "Переменные" появятся блоки для получения и изменения значения переменной.
Например, для получения значения, соответствующего строке "11101", можно написать такую программу:

Для запуска программы используйте кнопки:

Первая кнопка позволяет отправить ваше решение для проверки в проверяющую систему соревнований, вторая кнопка выполняет запуск программу локально, третья –
пошаговое выполнение или временная остановка программы, четвертая -- завершение выполнения программы, после которой программа будет выполняться сначала.
Можно изменить начальное состояние строки, щелкая левой кнопкой мыши по ячейкам, и длину строки, используя кнопки - и +.
*Система оценки и описание подзадач*
||.u|Подзадача 1 (50 баллов)||
5 тестов по 10 баллов
Строки для тестов имеют длину от 1 до 10 цифр и указаны ниже:
```text
1
100
11111
101000101
1110111101
```
Количество операций над регистром не должно превышать 50.
Так как строки в этой подзадаче имеют различную длину, вы можете выбрать команды для теста по длине строки.
Команды для каждого теста этой подзадачи нужно помещать в команду ветвления, показанную на рисунке:

Полное решение для этой подзадачи будет содержать 5 таких команд ветвления.
||.u|Подзадача 2 (25 баллов)||
5 тестов по 5 баллов
Длина строки от 11 до 25 цифр
Количество операций над регистром не должно превышать 50
Необходимые подзадачи: 1
||.u|Подзадача 3 (25 баллов)||
5 тестов по 5 баллов
Длина строки от 11 до 25 цифр
Необходимые подзадачи: 1, 2
Количество операций над регистром должно быть ***минимальным***.
Не нужно делать отдельное решение для каждой подзадачи, так как решение для подзадачи 3 является решением для подзадач 1 и 2,
а решение для подзадачи 2 является решением для подзадачи 1.
Баллы за каждый тест начисляются независимо, как сумма баллов полученных одним решением.
По запросу сообщается результат окончательной проверки на каждом тесте.
---
Для написания программы для робота используется [специальная версия среды Blockly](blockly/2860.html).
Вы можете использовать полную среду Blockly при решении других задач этого соревнования, выбрав пункт Blockly