Ограничения: время – 1s/2s, память – 64MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод 
Послать решение Blockly Посылки Темы Где Обсудить (0)
Программист Вова давно интересуется различными задачами со строками. В этой задаче будем
считать, что строка – произвольная последовательность ASCII-символов c кодами от 33 до 126.
Недавно Вова узнал об операциях со строками:
- сложение строк, обозначается символом +. Например, Doctor+Who=DoctorWho.
- умножение строк, обозначается символом *. Если S = A⋅B, то S = a1+B+a2+B+…+an+B,
где ai – i-ый символ строки A (нумерация символов строки начинается с 1). Например,
aca*x=axcxax.
После этого Вова подумал: почему бы не придумать уравнения, где неизвестной величиной будет
строка. После чего Вова стал решать придуманные им уравнения.
Перейдем к формальным определениям. Назовем уравнением последовательность
s1 $ s2 … $ sn = r, где si – либо неизвестная строка (обозначается ?), либо какая-то
определенная непустая строка (записывается символами строки без каких-либо дополнительных
символов или ограничителей), r – какая-то определенная непустая строка, а на местах значков $
могут стоять знаки операций сложения или умножения (причем в разных местах могут стоять
разные знаки). Все действия выполняются строго слева направо. Скобки не влияют на приоритет
выполнения операций. Гарантируется, что существует единственное i такое, что si = ?.
Символы ?, +, *, = не
используются как символы известных строк. Также всем si и r соответствуют непустые строки.
Требуется решить уравнение подобного вида, если известно, что существует непустое решение.
В первой строке находится строка S, задающая уравнение. Количество операций не превосходит
200000, длина строки S не более чем 300000 символов. В уравнении всегда присутствует ровно
один знак ?.
Напечатайте значение неизвестной строки.
Пример ввода
ab*?+ab=aabbababbaab
Источник: Московская открытая олимпиада школьников по программированию, 2011/12 учебный год