Статистика
Всего в нашей базе более 4 327 663 вопросов и 6 445 978 ответов!

Возможность отправлять закодированные сообщения во время Второй мировой войны была достаточно важной для союзников. Сообщения всегда отправлялись после их

10-11 класс

кодирования при помощи известного пароля. Иметь фиксированный пароль было небезопасно, поэтому возникла необходимость часто изменять его. Однако следовало разработать механизм отправления нового пароля. У одного из математиков, работавших в криптографической команде, возникла умная идея - отправить пароль, скрытый в самом сообщении. Интересным моментом было то, что получателю сообщения достаточно было знать только размер пароля, а потом найти его в полученном тексте.

Пароль размера n можно найти поиском в тексте наиболее часто встречаемой подстроки из n символов. После нахождения пароля все подстроки совпадающие с ним, удаляются из текста. Теперь пароль можно использовать для расшифровки сообщения.

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

Рассмотрим пример, в котором размер пароля равен трем (n = 3), а текст сообщения имеет вид baababacb. Паролем будет aba, потому что размер этой подстроки 3, она появляется чаще всего во всем тексте (дважды), а остальные шесть различных подстрок появляются только один раз (baa, aab, bab, bac, acb).

Технические условия

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

Состоит из нескольких тестов. Каждый тест представляет собой одну строку, в которой находится длина пароля n (0 < n ≤ 10) и закодированное сообщение. Сообщение содержит только прописные буквы латинского алфавита, его длина не более 106 и не меньше n.

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

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

Ksenia50 06 июня 2014 г., 2:06:33 (9 лет назад)
Рейтинг
+ 0 -
0 Жалоба
+ 0 -
Смурфффик
06 июня 2014 г., 3:10:09 (9 лет назад)

type
    piece = record
        value: string[10];
        count := 1;
    end;

var
    pieces: array[1..200]of piece;
    i, j, n, pieces_n: integer;
    s, p: string;
    found: boolean;
    imax:=1;

begin
    read(s);
    read(n);
    for i := 1 to length(s) - n + 1 do
    begin
        p := Copy(s, i, n);
        found := false;
        for j := 1 to pieces_n do
            if pieces[j].value = p then begin
                pieces[j].count := pieces[j].count + 1;
                found := true;
                if pieces[imax].count < pieces[j].count then
                    imax := j;
                break;
            end;
        if not found then begin
            pieces_n := pieces_n + 1;
            pieces[pieces_n].value := p;
        end;
    end;
   
    writeln(pieces[imax].value);
end.

Ответить

Другие вопросы из категории

Читайте также

Помогите решить задачуна паскале.

Возможность отправлять закодированные сообщения во время Второй мировой войны была достаточно важной для союзников. Сообщения всегда отправлялись после их кодирования при помощи известного пароля. Иметь фиксированный пароль было небезопасно, поэтому возникла необходимость часто изменять его. Однако следовало разработать механизм отправления нового пароля. У одного из математиков, работавших в криптографической команде, возникла умная идея - отправить пароль, скрытый в самом сообщении. Интересным моментом было то, что получателю сообщения достаточно было знать только размер пароля, а потом найти его в полученном тексте.

Пароль размера n можно найти поиском в тексте наиболее часто встречаемой подстроки из n символов. После нахождения пароля все подстроки совпадающие с ним, удаляются из текста. Теперь пароль можно использовать для расшифровки сообщения.

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

Рассмотрим пример, в котором размер пароля равен трем (n = 3), а текст сообщения имеет вид baababacb. Паролем будет aba, потому что размер этой подстроки 3, она появляется чаще всего во всем тексте (дважды), а остальные шесть различных подстрок появляются только один раз (baa, aab, bab, bac, acb).

Технические условия

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

Состоит из нескольких тестов. Каждый тест представляет собой одну строку, в которой находится длина пароля n (0 < n ≤ 10) и закодированное сообщение. Сообщение содержит только прописные буквы латинского алфавита, его длина не более 106 и не меньше n.

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

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

Написать программу проверки знания даты начала второй мировой войны. В случае неверного ответа пользователя программа должна выводить правильный ответ.

Ниже представлен рекомендуемый вид экрана во время работы программы (данные, введенные пользователем, выделены полужирным шрифтом). В каком году началась вторая мировая война? Введите число и нажмите <Enter>

Для передачи секретного сообщения используется код, состоящий только из латинских букв (всего используется 26 символов). При этом все символы

кодируются одним и тем же минимально возможным количеством бит. Было передано закодированное сообщение, состоящее из 240 символов. Определите информационный объем пе-реданного сообщения.

Напишите программу, переводящую время, указанное в

минутах, во время в часах и минутах.

Желательно описание хода выполнения заданий

1. Врач принимает пациентов с 8 утра до 2 часов дня. На каждого пациента отводится по 30 мин. Какое кол-во информации содержит сообщение о том, что Петя записался на приём в 11:30?
2. В детской магнитной азбуке 32 буквы. Какое количество информации содержит сообщение о том, что из них было собрано слово "муравей"
3. Какое кол-во информации получит второй игрок при игре в кретики-нолики на поле размером 8х8 клеток, после первого хода первого игрока, играющего крестиками?
4. Необходимо отгадать слово, состоящее из 5 букв и записанное с помощью алфавита 32 букв. Можно задавать вопросы, ответом на которые будет "Да" или "Нет". С помощью какого числа вопросов можно отгадать слово при оптимальной стратегии игры?
5. Алфавит некоторого языка состоит из 64 символов. За склько секунд можно передать текст из 2000 символов, если скорость передачи - 50 байтов в секунду?
6. В некотором алфавите записан текст из 300 символов, кол-во информации в тексте - 150 байтов. Сколько символов в алфавите?
7. Имеется файл с текстом из 20000 символов. При наборе текста использовался компьютерный алфавит. Текст необходимо скопировать на дискету, на которой имеется свободная область памяти 20 Кбайт. Поместится ли текст на дискету?
8. В течение 10 секунд было передано сообщение, кол-во информации в котором равно 5000 байтов. Каков размер алфавита, если скорость передачи - 800 символов в секунду?
9.Два сообщения содержат одинаковое кол-во символов. Кол-во информации в первом тексте в 2,5 раза больше, чем во втором. Сколько символов содержат алфавиты, если известно, что символов в каждом алфавите не превышает 32 и на каждый символ приходится целое число битов?
10. Сколько битов информации содержит любое трёхзначное восьмеричное число?



Вы находитесь на странице вопроса "Возможность отправлять закодированные сообщения во время Второй мировой войны была достаточно важной для союзников. Сообщения всегда отправлялись после их", категории "информатика". Данный вопрос относится к разделу "10-11" классов. Здесь вы сможете получить ответ, а также обсудить вопрос с посетителями сайта. Автоматический умный поиск поможет найти похожие вопросы в категории "информатика". Если ваш вопрос отличается или ответы не подходят, вы можете задать новый вопрос, воспользовавшись кнопкой в верхней части сайта.