Олимпиадный тренинг

Задача . B. Переворотное шифрование


Задача

Темы: реализация *900

Строка \(s\) длины \(n\) может быть зашифрована следующим алгоритмом:

  • переберём все делители числа \(n\) в порядке убывания (то есть от \(n\) до \(1\)),
  • для каждого делителя \(d\) перевернём подстроку \(s[1 \dots d]\) (то есть такую подстроку, которая начинается в позиции \(1\) и заканчивается в позиции \(d\)).

Например, если алгоритм применяется к строке \(s\)codeforces», то строка будет изменяться следующим образом: «codeforces» \(\to\) «secrofedoс» \(\to\) «orcesfedoс» \(\to\) «rocesfedoс» \(\to\) «rocesfedoс» (очевидно, последний переворот не изменяет строку, так как \(d=1\)).

Вам дана зашифрованная строка \(t\). Требуется произвести расшифровку, то есть найти такую строку \(s\), в результате шифровки которой получится строка \(t\). Можно доказать, что такая строка \(s\) всегда существует (и при этом единственная).

Входные данные

В первой строке задано одно целое число \(n\) (\(1 \le n \le 100\)) — длина строки \(t\). Во второй строке задана строка \(t\). Длина строки \(t\) равна \(n\), строка состоит только из строчных букв латинского алфавита.

Выходные данные

Выведите такую строку \(s\), что если зашифровать ее описанным выше алгоритмом, то получится строка \(t\).

Примечание

Первый пример разобран в условии задачи.


Примеры
Входные данныеВыходные данные
1 10
rocesfedoc
codeforces
2 16
plmaetwoxesisiht
thisisexampletwo
3 1
z
z

time 1000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
Python1
С++ Mingw-w645
Комментарий учителя