Подразделы

Дата и время

22/11/2024 10:14:02

Авторизация

Имя:
Пароль:
Зарегистрироваться
Восстановить пароль
 

printЛето 8

printF. Печать

Ограничения: время – 5s/10s, память – 64MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод copy
Послать решение Blockly Посылки Темы Где Обсудить (0)

В Московском Институте Оптимизаций (МИО) был разработан новый протокол, который используется для передачи данных на принтер. Согласно этому протоколу в режиме печати текстовых файлов принтер «понимает» три команды:
Letter('<символ>') – печатает символ, указанный в скобках.
Repeat(<число>) – повторяет печать последних `N` символов, где `N` – число, указанное в скобках.
End – завершает печать файла.
Ваша задача заключается в том, чтобы написать программу, которая получая на входе строку символов оптимальным образом составляет программу для печати этой строки (оптимальным образом – значит программа должна содержать минимально возможное количество команд).
В первой строке входного файла содержится строка, которую нужно напечатать. Эта строка может содержать любые символы, ASCII коды которых не меньше 32. Длина строки не превосходит 5000 символов.
В первой строке выходного файла должно содержаться единственное число – общее количество команд в получившейся программе. Далее должны идти сами команды – по одной команде в каждой строчке. В конце каждой команды кроме последней должен содержаться символ ";" (точка с запятой), а после последней команды должен идти символ "." (точка).

Пример ввода 1

BABBAABBAB

Пример вывода 1

8
Letter('B');
Letter('A');
Letter('B');
Letter('B');
Letter('A');
Repeat(4);
Letter('B');
End.

Пример ввода 2

word

Пример вывода 2

5
Letter('w');
Letter('o');
Letter('r');
Letter('d');
End.
Источник: http://neerc.ifmo.ru/school/archive/
loading