Частотный анализ

Просмотр в формате PDF

Submit solution


Очки: 150
Ограничение по времени: 2.0s
Ограничение по памяти: 256M

Problem type
Allowed languages
C++, Python

Криптоаналитик получил сообщение, зашифрованное простой заменой заглавных латинских букв. Для вскрытия он использует упрощённую модель частотного анализа.

Известна строка из 26 заглавных латинских букв — это порядок букв открытого текста по убыванию их типичной частоты в языке: первая буква считается самой частой, вторая — следующей по частоте и так далее.

Предполагается, что в данном шифротексте порядок букв по частоте совпадает с этим эталонным порядком идеально. То есть:

  • самая частая буква шифротекста соответствует первой букве заданного порядка;
  • вторая по частоте — второй;
  • и так далее.

Необходимо расшифровать сообщение:

  1. подсчитать частоты всех заглавных латинских букв в шифротексте;
  2. упорядочить буквы шифротекста по убыванию частоты;
  3. если частоты равны, раньше должна идти буква с меньшим алфавитным порядком;
  4. сопоставить полученный порядок с данным эталонным порядком букв;
  5. заменить все заглавные латинские буквы в сообщении по найденному соответствию.

Все символы, не являющиеся заглавными латинскими буквами, нужно оставить без изменений.

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

Первая строка содержит строку из 26 заглавных латинских букв — порядок букв открытого текста по убыванию частоты.

Вторая строка содержит шифротекст, состоящий из заглавных латинских букв и пробелов.

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

Выведите расшифрованный текст.

Ограничения

  • длина первой строки равна 26;
  • все символы первой строки — различные заглавные латинские буквы;
  • вторая строка состоит только из заглавных латинских букв и пробелов;
  • 1 <= длина второй строки <= 10^5.

Примеры

Пример 1

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

ABCDEFGHIJKLMNOPQRSTUVWXYZ
A

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

A
Пример 2

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

ZYXWVUTSRQPONMLKJIHGFEDCBA
A A

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

Z Z

Комментарии

Еще нет ни одного комментария.