Этот выпуск подготовили мы ? два Дмитрия, Илья, ну и один Александер.
Мы ? группа студентов ? программистов и готовы помочь вам в подготовке к решению олимпиадных задач. Каждый выпуск будем содержать немного теории по алгоритмам, разбор задач из предыдущего выпуска и, разумеется, тексты новых задач.
В первом выпуске разбор задач и теорию мы выпустим (пока не выбрали, что напишем). И для разминки дадим пару пробных задач. Ловите:
Задача ?1
. Удвоение строк.
Последовательность строк формируется следующим образом:
S[1]=?a?;
S[2]=?aab?;
?
S[n]=S[n-1]+S[n-1]+letter[n]
, где letter[n] ? n-ная буква латинского алфавита.
Требуется найти
i-й символ k-й строки.
Во
входном файле input.txt содержится две строки: в первой ? N ? номер строки 1<=N<=26, во второй ? K ? номер искомого символа.
Выходной файл
output.txt должен содержать искомый символ.
Пример:
input.txt
3
5
output.txt
a
Задача ?2
. Строки Фибоначчи
Последовательность строк Фибоначчи определяется следующим образом: S[1]=?b?, S[2]=?a?, S[k] = S[k-1] + S[k-2] для k>2. Например, S[3]=?ab?, S[4]=?aba?, S[5]=?abaab? и т. д.
Даны натуральные числа N, М, L. Требуется вывести подстроку строки s[N], начинающуюся с позиции M и имеющую длину L.
Входной файл
INPUT.TXT содержит одну строку, в которой находятся три разделённых пробелом натуральных числа N, M и L, где
1<=N<=40; 1<=M<=length(S[N]), 1<=L<=1000.
Выходной файл
OUTPUT.TXT содержит подстроку строки S[N], начинающуюся с позиции M и имеющую длину L (длина выведенной подстроки может оказаться меньше, если длина оставшейся части строки S[N], начинающейся с позиции M, меньше L).
Пример:
input.txt
5
3
10
output.txt
aab
Идея решения этих задач одинакова и, решив одну, вы без труда справитесь с другой. Свои решения вы можете отправлять на адрес
olimp@math.pomorsu.ru. После того, как ваше решение будет проверено, вы получите ответ.
Если вы проявите активность, то в будущем мы создадим сайт с автоматизированной системой проверки ваших решений, архивом всех номеров и т. д.
Мы считаем необходимым познакомить вас (или напомнить, если вы уже их знаете) со многими классическими и современными алгоритмами, без знания которых иногда весьма непросто бывает решить поставленную задачу, особенно если эта задача олимпиадного уровня. Список основных разделов, которые мы будем рассматривать будет опубликован в следующем выпуске.
Начиная со следующего выпуска структура номера будет следующей: сначала будут разбираться задачи предыдущего номера, затем будет рассмотрен некоторый теоретический вопрос, который может представлять собой либо теоретический материал, предполагающий лишь усвоение, либо разбор какой-то задачи, либо (что чаще всего и будет) объяснение какого-либо алгоритма. После теории вам будет предложено несколько задач. Обычно задач будет две: одна на проверку пройденного материала, а другая либо будет затрагивать вопрос, рассматриваемый ранее, либо будет нметь произвольную тематику.
Если у вас есть какие-либо вопросы или предложения - пишите на olimp@math.pomorsu.ru и мы обязательно ответим вам.