Строки

54 задачи
Число у задачи — рейтинг сложности, слово рядом — насколько она трудна по сравнению с другими задачами такого же типа. Шкалы задач с ответом и задач с кодом между собой не сравниваются. Рядом — счётчики попыток: успешные, неуспешные.
Малоизвестен тот факт, что у коров свой алфавит "cowphabet". Он состоит из тех же 26 букв от 'a' до 'z', но в другом порядке.
Чтобы скоротать время, Беси бормочет cowphabet опять и опять. Фермеру Джону интересно, сколько раз она его пробормотала.

По заданной строке букв, которые ФД расслышал из бормотания Беси, определите минимальное количество раз, которое Беси должна пробормотать cowphabet, чтобы ФД услышал заданную строку. ФД не всегда обращает внимание на бормотание Беси, поэтому он может не расслышать некоторые буквы из бормотания Беси. Данная Вам строка содержит только те буквы, которые он услышал.

Входные данные
Первая строка ввода содержит 26 маленьких латинских букв от 'a' до 'z' в порядке их появления в cowphabet. Следующая строка содержит строку из маленьких латинских букв, которые услышал ФД. Эта строка имеет длину от 1 до 1000.
Выходные данные
Выведите минимальное количество раз, которое Беси пробормотала алфавит.
Примеры
Входные данные Выходные данные Пояснение
1
abcdefghijklmnopqrstuvwxyz
mood
3

В этом примере cowphabet упорядочен как нормальный алфавит.

Бесси пробормотала cowphabet как минимум 3 раза. Ниже показано, как Беси бормотала, и большими буквами - какие буквы услышал ФД.

abcdefghijklMnOpqrstuvwxyz abcdefghijklmnOpqrstuvwxyz abcDefghijklmnopqrstuvwxyz

В непустой строке сдвиг влево перемещает первый символ в конец строки, а сдвиг вправо перемещает последний символ в начало строки. Например, сдвиг влево на строке abcde приводит к bcdea, а два сдвига вправо на abcde приводят к deabc.

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

Входные данные
На вход подается одна строка SS состоит из строчных английских букв. 1 <= |S| <= 1000, где |S| - длина строки S.

Выходные данные
Выведите в первой строке лексикографически наименьшу строку, во второй - лексикографически наибольшую строку.
 
Примеры
Входные данные Выходные данные
1 aaba aaab
baaa
2 z z
z
3 abracadabra aabracadabr
racadabraab
✓ 22✗ 47900средняяВойти и решать
Определите трех учащихся с наилучшим средним баллом по трем предметам. Выведите фамилии и имена этих учащихся. Если при этом у нескольких учащихся средний балл совпадает со средним баллом учащегося, "занявшего 3-е место", то необходимо вывести их всех.

Входные данные
Заданы сначала количество учащихся n, затем n строк, каждая из которых содержит фамилию, имя и три числа (оценки по трем предметам: математике, физике, информатике). Данные в строке разделены одним пробелом. Оценки принимают значение от 1 до 5.

Выходные данные
Необходимо вывести пары фамилия-имя по одной на строке, разделяя фамилию и имя одним пробелом. Выводить оценки не нужно. Порядок вывода должен быть таким же, как в исходных данных.
 
 
Примеры
Входные данные Выходные данные
1 3
Yakovlev Ivan 5 5 5
Yapryntsev Aleksey 5 5 5
Kozlov Georgiy 5 5 5
Yakovlev Ivan
Yapryntsev Aleksey
Kozlov Georgiy
Вам дана строка S, состоящая из цифр от 1 до 9 включительно. Вы можете вставить символ + в некоторые позиции (возможно, ни в одну) между двумя цифрами в этой строке. Здесь знак + не должен появляться последовательно после вставки (т.е. не должно быть два и больше знака подряд). Все строки, которые можно получить таким образом, можно оценить как формулы. Оцените все возможные формулы и распечатайте сумму результатов, полученных при вычислении всех возможных формул.

Входные данные
На вход подается непустая строка S, состоящая из цифр от 1 до 9 включительно. Длина строки не более 10 символов.

Выходные данные
Выведите сумму результатов, полученных при вычислении всех возможных формул.
 

 

Примеры
Входные данные Выходные данные Пояснение
1 125 176 Всего можно получить 4 формулы: 125, 1 + 25, 12 + 5 и 1 + 2 + 5.
Результат после вычисления каждой формулы:
125
1 + 25 = 26
12 + 5 = 17
1 + 2 + 5 = 8
Таким образом, сумма 125 + 26 + 17 + 8 = 176.
2 9999999999 12656242944  

 

У Громозеки есть любимая строка S, состоящая из строчных английских букв и пустая строка T. В конец строки T он хочет добавить произвольное количество раз одно из следующих слов: dreamdreamererase и eraser. Помогите Громозеке определить, сможет ли он получить S = T.

Формат входных данных
На вход подается строка S (1<= длина строки S <=105), состоящая из строчных английских букв (a-z).

Формат выходных данных
Если возможно получить S = T, выведите YES. В противном случае выведите NO.

 

✓ 13✗ 901 000средняяВойти и решать
Вожди известного племени Мумба-Юмба решили придумать новый боевой вопль для своих воинов. При этом они решили, что вопль должен состоять ровно из N букв (всего в алфавите племени M букв). Также, после долгих исследований было выяснено, что если в вопле встречается слово si  (слово – это последовательность букв алфавита, не длиннее трех символов), то этот вопль вселяет во врага fi единиц страха. Если в вопль входит несколько слов, то их “страшность” суммируется. Например, если вопль содержит слова si и sj, то вопль вселяет fi+fj единиц страха. 
Требуется по заданным N, M, алфавиту и списку слов si составить максимально страшный вопль. 

Входные данные:
В первой строке записано три числа – N, M и К (0<N≤100, 0<M<25, 0 ≤ K ≤ 100), где K – количество страшных слов. В следующей строке записан алфавит – строка из M строчных латинских букв. Далее в K строках записана информация о словах – само слово и через пробел одно число, обозначающее страшность этого слова (0 < fi ≤ 10000).

Выходные данные:
В выходной файл необходимо вывести страшность полученного вопля и на следующей строке – сам вопль.
Примеры
Входные данные Выходные данные
1 3 5 4
abcde
abc 10
ab 5
be 7
e 4
16
abe
✓ 5✗ 191 000средняяВойти и решать
Даны три строки, состоящие из строчных латинских букв. С этими строками можно производить следующие операции: либо заменить один символ строки на два таких же символа (например, заменить символ «a» на «aa»), либо, наоборот, заменить два подряд идущих одинаковых символа на один такой же символ.

Необходимо при помощи этих операций сделать все три строки равными какой-то другой общей строке S либо определить, что это сделать невозможно. При этом нужно минимизировать общее количество операций.

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

Выходные данные
Если при помощи указанных операций возможно сделать все три строки равными, выведите такую строку S , что суммарное число операций, необходимых для преобразования всех трёх данных строк к строке S , будет минимальным. Если этого сделать нельзя, программа должна вывести одно слово IMPOSSIBLE (заглавными буквами).
Примеры
Входные данные Выходные данные
1 aaaza
aazzaa
azzza
aazza
2 xy
xxyy
yx
IMPOSSIBLE
Марина очень любит палиндромы. Палиндром — это строка, которая одинаково читается слева направо и справа налево, например « noon », « rotator » или « radar ».

Марина написала на доске строку s , состоящую из n строчных латинских букв s1 s2 ... sn . Подстрокой строки s называется строка s ls l + 1 ... sr для некоторых 1 ≤ l ≤ r ≤ n . Марина ищет в строке s как можно более длинную подстроку, которая является палиндромом. Например, в строке « rotateradars » такой подстрокой будет « radar ».

Вова хочет изменить написанную Мариной строку, чтобы подстрока-палиндром была как можно длиннее. Он может либо оставить строку нетронутой, либо изменить в ней ровно одну букву на другую. Например, если в строке « rotateradars » изменить шестую букву на « o », получится строка « rotatoradars », в которой максимальная подстрока-палиндром « rotator » имеет длину 7 . Подстроку-палиндром большей длины получить нельзя.

Помогите Вове определить, какую максимальную длину подстроки-палиндрома он сможет получить.

Входные данные
Первая строка входных данных содержит натуральное число n — длину строки, которую написала Марина ( 1 ≤ n ≤ 100 ).

Во второй строке входных данных содержится сама строка, состоящая из n строчных латинских букв.

Выходные данные
В выходной файл выведите одно число — максимальную длину подстроки-палиндрома, которую может получить Вова.
Примеры
Входные данные Выходные данные
1 12
rotateradars
7
✓ 7✗ 201 000средняяВойти и решать
Дети, как известно, все раньше и раньше начинают пользоваться интернетом. Теперь, когда у них возникают вопросы, они не бегут к родителям, а заходят в свою любимую поисковую систему и узнают ответ в интернете. Но вдруг они случайно найдут что-нибудь, что им знать пока рановато? Или, может быть, лучше не знать вообще никогда?

В одной стране эту проблему решили очень просто: был создан список запрещенных для использования в интернете слов. Ведь очевидно, что статья, в которой упоминается какое-нибудь нехорошее слово, не может научить ребенка ничему хорошему. Любой сайт, содержащий хотя бы одно слово из этого списка, теперь подлежит мгновенной блокировке. Невинный ребенок никогда не натолкнется на что-нибудь, про что ему еще рановато знать — такой статьи просто не найдется в интернете. Но злобные сайтовладельцы придумали способ обойти этот запрет: если вместо некоторых букв написать внешне похожие на них цифры, то прочитать этот текст все равно будет можно, а робот, проверяющий сайты на пригодность, не распознает в слове запрещенное — ведь формально его нет на сайте.

Ваша задача — помочь правительству этой страны защитить детей от вредной информации. Напишите программу, которая будет проверять, нет ли в данной строке запрещенного слова, учитывая возможное коварство сайтовладельцев. Известно, что сайтовладельцы иногда делают следующие замены: e  3, o  0, i  1, t  7, a  4, s  5.

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

Выходные данные
Выведите «YES», если запрещенное слово встречается как подстрока в строке с сайта, и «NO» иначе. Возможно, в строке с сайта некоторые буквы изначально были заменены на цифры в соответствии с приведенными выше правилами.
 
Примеры
Входные данные Выходные данные
1 inah0leinthegroundthereliv3dah0bb1t
hobbit
YES
2 whath4v3igotinmypocket
handses
NO
3 whath4veig0t1nmyp0ck37
knife
NO
4 wh4thav31go71nmyp0ck3t
stringofnothing
NO
✓ 19✗ 31900средняяВойти и решать
Артур всегда очень боялся знакомиться с девушками. Дело даже не в природной стеснительности Артура, и даже не столько в том, что Артур не знает, о чем говорить с девушками. Просто Артур с детства не выговаривает букву «р» и очень этого стесняется. Поэтому Артур старается не произносить лишний раз слова, в которых есть эта ненавистная ему буква.

Однажды друзья познакомили Артура с девушкой по имени Нина (о, какое прекрасное имя!). Она была очаровательна и очень болтлива, поэтому Артуру почти не нужно было подбирать слова — она заполняла неловкую тишину за него. Разумеется, он пригласил ее в кафе выпить чашечку кофе. Артур даже продумал все свои реплики заранее: «Счастлив тебя видеть», «Ты сегодня восхитительна», «Да, конечно, я внимательно тебя слушаю», «И что дальше?», «Счет, пожалуйста» и, конечно, «Я позвоню тебе на днях, не скучай».

Но, как известно, не бывает идеальных планов. Все шло как по маслу, но вдруг, сидя за столиком в кафе, Нина сказала, что ужасно не выспалась и не отказалась бы от N чашек кофе. И тут Артур понял, что он не обдумал заранее, как он будет делать заказ. Понятно, что нужно сказать что-то вроде: «Сколько-то чашек кофе, пожалуйста», но вот сколько же чашек нужно, чтобы Нина так и не поняла, что Артур не выговаривает букву «р»? Явно нужно заказать не меньше, чем N + 1 чашку — чтобы и Нине досталось N чашек, и самому выпить, но вот сколько точно — Артур не знает. Денег у него не слишком много, поэтому заказывать больше, чем жизненно необходимо для того, чтобы избежать разоблачения, Артур не хочет.

Помогите Артуру — посчитайте, сколько чашек кофе он должен заказать.

Входные данные
Вводится одно целое число N (1 ≤ N ≤ 2999).

Выходные данные
Выведите одно число — количество чашек кофе, которое должен заказать Артур.
Примеры
Входные данные Выходные данные
1 1 2
2 12 15
Алиса и Боб — очень опытные шпионы. Лучше всего им удается находить пароли для доступа к различным секретным данным. Вот и в этот раз Алиса получила от Боба сообщение, в котором говорилось, что ключом является число и далее шло само это число. Также Боб писал, что число-ключ должно делиться на 9. Когда Алиса попробовала ввести полученный пароль, то оказалось, что он не подходит. Алиса очень доверяет Бобу, и поэтому она решила, что Боб мог ошибиться только в одной цифре пароля. Поскольку у Алисы не так много времени, она решила не выяснять у Боба правильный ответ, а перебрать все числа, которые могли бы быть паролем, т.е. все такие числа, которые могут быть получены из того числа, которое прислал Боб, заменой ровно одной из его цифр и делятся на 9. За помощью Алиса обратилась к вам. Напишите программу, которая предложит Алисе все возможные варианты пароля.

Входные данные
Во входных данных содержится единственное число P (1 ≤ P ≤ 109) — то число, которая Алиса получила в сообщении от Боба. Гарантируется, что оно не начинается с нуля.

Выходные данные
Выведите в столбик все возможные варианты паролей, которые нужно перебрать Алисе, в произвольном порядке. Ни одно из полученных вами чисел не должно начинаться с нуля. Все возможные варианты паролей должны содержать столько же цифр, сколько и исходное число, полученное Алисой.
Примеры
Входные данные Выходные данные
1 256 756
216
252
✓ 53✗ 3811 000средняяВойти и решать
Дано алгебраическое выражение, состоящее из натуральных чисел, переменных (a, b, c, ..., z) записанных строчной латинской буквой, знаков арифметических операций  + ,  - ,  *  (умножение) и  *  *  (возведение в степень). При этом если после числа идет переменная, то знак умножения может быть пропущен.

Требуется подсчитать, сколько в данном выражении умножений и сколько возведений в степень.

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

Выходные данные
Выведите два числа через пробел: количество умножений и количество возведений в степень.
Примеры
Входные данные Выходные данные
1 2x+5 1 0
2 x**y**2z*3*5 3 2
✓ 25✗ 83800средняяВойти и решать
Дети решили поиграть в догонялки, и, чтобы выбрать водящего, встали в круг и стали считаться. Для этого они использовали считалочку. Показывая пальцем по очереди на каждого стоящего в кругу, считающий произносит одно слово, и тот, на кого придется последнее слово, и будет водить. Требуется по данной считалочке определить, кто же будет водить.

Входные данные
В первой строке вводится считалочка. Она состоит из слов, записанных латинскими буквами. Слова разделены одним пробелом. Знаков препинания нет, строка начинается и заканчивается буквой. В считалочке не менее двух слов, а длина строки не превосходит 100.

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

Выходные данные
Выведите имя школьника, которому предстоит водить.
 
Входные данные Выходные данные
1 To be or not to be
John Mary Ann Kate
Mary
2 Na zolotom kryltse sideli
Vasya Vasya Vasya
Vasya
✓ 30✗ 26800средняяВойти и решать
На вход программы поступает строка текста, в которой могут встречаться:
— прописные и строчные (т.е. большие и маленькие) латинские буквы;
— пробелы;
— знаки препинания: точка, запятая, восклицательный и вопросительный знак;
— символ –, обозначающий в некоторых случаях тире, а в некоторых — дефис.
Слово — это последовательность подряд идущих латинских букв и знаков дефис, ограниченная с обоих концов. В качестве ограничителей могут выступать начало строки, конец строки, пробел, знак препинания, тире. Тире отличается от дефиса тем, что слева и справа от знака дефис пишутся буквы, а хотя бы с одной стороны от тире идет либо начало строки, либо конец строки, либо пробел, либо какой-либо знак препинания, либо еще одно тире.
Напишите программу, определяющую, сколько слов в данной строке текста.

Входные данные
Вводится строка длиной не более 200 символов.

Выходные данные
Выведите одно число — количество слов, которые содержатся в исходной строке.
 
Примеры
Входные данные Выходные данные
1 Hello , world! 2
2 www.olympiads.ru 3
3 Gyro-compass - this is a ... 4
✓ 29✗ 210800средняяВойти и решать
Натуральное число называется палиндромом, если его запись в десятичной системе счисления одинаково читается как слева направо, так и справа налево. По данному натуральному числу N определите следующее за ним натуральное число (то есть наименьшее число, которое превосходит N), являющееся палиндромом.
Программа получает на вход одно натуральное число N.
Программа должна вывести наименьшее натуральное число, которое больше N и является палиндромом.
 
Ввод Вывод
4321 4334
Один древнеримский торговец брал несколько раз ссуду в древнеримском банке. Каждый раз банкир записывал размер выданной ссуды на листе пергамента, используя римские числа. Но ввиду дороговизны пергамента запись производилась плотно и все числа оказались записанными подряд, без разделителей. Когда торговец пришёл возвращать ссуду, оказалось, что невозможно установить разбиение записи на числа.

Например, если на пергаменте записана строка «XIIV», её можно разбить на римскиечисла разными способами, например, XI + IV = 11 + 4 = 15 или XII + V = 12 + 5 = 17, возможны и другие варианты разбиения.

Торговец хочет вернуть как можно меньше денег, поэтому он хочет так разбить строку цифр на римские числа, чтобы сумма всех чисел была как можно меньше.

Программа получает на вход строку, длина которой не превосходит 250 символов. Строка состоит только из заглавных латинских букв I, V, X, L, С, D, M.

Программа должна вывести единственное число – минимально возможную сумму, которую можно получить при разбиении данной строки на последовательность корректных римских чисел. Ответ нужно вывести арабскими цифрами в десятичной системе счисления.

Правила записи римских чисел
Римскими цифрами можно записать целые числа от 1 до 3999. Число представляется в виде суммы тысяч, сотен, десятков и единиц. Далее из следующей таблицы берётся по одному элементу, соответствующему тысячам, сотням, десяткам, единицам ровно в таком порядке.



Если число тысяч, сотен, десятков, единиц равно 0, то из соответствующего столбца ничего не берётся. Например, число 1990 записывается, как 1000 + 900 + 90 = MCMXС.
Ввод Вывод
XIIV 15

 
Палиндромом называется слово, которое одинаково читается как слева направо, так и справа налево, например, в английском языке такими словами являются «radar» и «racecar».
Света изучает английский язык и решила принять участие в дистанционном конкурсе знатоков английского языка. Но, когда она писала ответ на задание «найдите самое длинное слово, которое является палиндромом», ошиблась и нажала на клавиатуре одну лишнюю клавишу.
Определите, какую букву нужно удалить в набранном Светой слове, чтобы это слово стало палиндромом.

Входные данные
Программа получает на вход строку из строчных английских букв, содержащую не менее 2 и не более 100 000 символов.

Выходные данные
Программа должна вывести единственное число – номер буквы в строке, при удалении которой слово становится палиндромом. Если при удалении любой буквы слово не станет палиндромом, программа должна вывести число 0.
Примеры
Входные данные Выходные данные
1 raceczar 6
2 car 0
✓ 38✗ 133800средняяВойти и решать
Во время последней секретной операции Капитану Марвел удалось выкрасть закодированное
секретное сообщение скруллов — строку s. Однако, в закодированном виде никакой полезной информации оно из себя не представляет, поэтому его непременно нужно раскодировать.
Несмотря на развитость скруллов, их система кодирования сообщений проста и общеизвестна:
• Перед кодированием сообщения выбирается цифра d (0 <= d <= 9)
• Символы сообщения рассматриваются слева направо
• У каждого символа сообщения вычисляется его ASCII-код (например, у «a» он равен 97, у
«b» — 98, у «z» — 122)
• Если код трехзначный, он дописывается к текущей закодированной строке как есть, если же
код двузначный, к нему в случайное место добавляется цифра d и полученный результат
дописывается к текущей закодированной строке (например, если d = 3, а текущая буква —
«a», к текущей закодированной строке могут дописатсья числа 397, 937 или 973)
• После обработки всех букв, результатом считается полученная закодированная строка
Число d обычно передается вместе с сообщением, но Капитану Марвел не удалось его найти. Однако, она точно знает, что исходное сообщение состояло только из строчных и заглавных латинских
букв. Она понимает, что без числа d раскодировать сообщение однозначно может не получиться, поэтому для начала хочет посчитать, сколько существует различных строк t, состоящих из строчных
и заглавных латинских букв, таких, что, закодировав их, получится строка s. Так как наша героиня
не может быть полностью уверена, что сообщение было перехвачено полностью, вполне возможно,
что его невозможно декодировать ни одним способом.
Помогите нашей героине — найдите количество этих строк по модулю 109 + 7.

Формат входных данных
В единственной строке содержится закодированная строка s, выкраденная Капитаном Марвел
(3 <= |s| <= 105). Гарантируется, что строка s состоит только из цифр, а также что ее длина кратна 3.
Формат выходных данных
В единственной строке выведите одно число — количество различных строк, состоящих из строчных и заглавных латинских букв, которые кодируются в строку s, по модулю 109 + 7.
 
Ввод Вывод
988 2
100905 1
600 0
 
Замечание
В первом примере закодированную строку можно получить из «b», если d = 8, а также из «X», если d = 9.
Во втором примере закодированную строку можно получить только из «dZ» при d = 5.

 
Для кодирования сообщения используют следующие действия: сообщение записывают, опуская пробелы, в прямоугольник заданной высоты по столбцам, а затем прочитывают строки в заданном порядке.
 
1 P R I 
2 R A N 
3 O M G 
4 G M 
 
а затем, если выбрать порядок строк 3, 1, 2, 4, получают закодированное сообщение OMGPRIRANGM.
 
Требуется написать программу, которая по заданным высоте прямоугольника и порядке прочтения строк при кодировке декодирует заданное сообщение.
 
Входные данные
Входные данные содержат: в первой строке высоту прямоугольника H (2 ≤ H ≤ 10), во второй – порядок прочтения строк (числа записаны через пробел), в третьей – закодированное сообщение, длина которого составляет от 1 до 200 символов. Закодированное сообщение состоит из заглавных и строчных латинских букв  и цифр.
 
Выходные данные
В выходные данные записывается декодированное сообщение.

Ввод Вывод
4
3 1 2 4
OMGPRIRANGM
PROGRAMMING


 

✓ 22✗ 1271 000средняяВойти и решать
Геном жителей системы Тау Кита содержит 26 видов оснований, для обозначения которых будем использовать буквы латинского алфавита от A до Z, а сам геном записывается
строкой из латинских букв. Важную роль в геноме играют пары соседних оснований, например, в геноме «ABBACAB» можно выделить следующие пары оснований: AB, BB, BA,
AC, CA, AB. 
Степенью близости одного генома другому геному называется количество пар соседних оснований первого генома, которые встречаются во втором геноме.
Вам даны два генома, определите степень близости первого генома второму геному.

Программа получает на вход две строки, состоящие из заглавных латинских букв. Каждая строка непустая, и её длина не превосходит 105.

Программа должна вывести одно целое число – степень близости генома, записанного в первой строке, геному, записанному во второй строке.

Ввод Вывод Примечание
ABBACAB
BCABB
4
Следующие пары оснований первого генома встречаются
во втором геноме: AB, BB, CA, AB. Обратите внимание на то,
что пара AB в первом геноме встречается два раза, поэтому
и подсчитана в ответе два раза.

Поделиться
Класснуть