Темы --> Информатика --> Язык программирования
    Процедуры и функции(96 задач)
    Массивы(232 задач)
    Типы данных(356 задач)
    Циклы(177 задач)
    Условный оператор (if)(164 задач)
    Python(260 задач)
    Standard Template Library(2 задач)
---> 145 задач <---
Страница: << 14 15 16 17 18 19 20 >> Отображать по:
ограничение по времени на тест
4.0 second;
ограничение по памяти на тест
64 megabytes

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

Небольшая компания «Домострой» также решила выйти на этот рынок и стала предлагать место для рекламы на своих блоках заборов. Блок представляет собой параллелепипед размером \(1\times1\times L\), на одной из сторон которого есть место для рекламы — пространство размера \(1\times L\), в которое можно вписать ровно \(L\) букв латинского алфавита.

К сожалению, иногда сделки у компании срывались, и заранее подготовленные блоки с рекламой отправлялись на склад. Со временем там скопилось приличное количество блоков различных типов (блоки разных типов отличаются друг от друга только надписью), поэтому было решено использовать их вторично.

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

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

После того, как некоторое число \(K\) блоков, каждый из которых имеет длину \(L\), поставили друг на друга, получилась прямоугольная таблица размером \(K\times L\), в каждой клетке которой находится буква латинского алфавита. Каждый рекламный блок соответствует строке этой таблицы. Теперь содержимое этой таблицы выписывается по столбцам, начиная с самого левого. При этом в каждом столбце буквы выписываются сверху вниз. В случае, изображённом на рисунке, в результате этого процесса получилась бы строка «TOEIIZENITKN». Необходимо, чтобы рекламная надпись, требуемая заказчику, входила в получившуюся строку как подстрока «TOEIIZENITKN».

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

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

Первая строка входного файла содержит два натуральных числа \(N\) и \(L\) — число различных типов блоков на складе и длина каждого блока соответственно (\(1\le N\le100\), \(1\le L\le100\)). Последующие \(N\) строк содержат по одной записи длиной \(L\), состоящей из строчных латинских букв — надписи на блоках соответствующего типа. Надписи на блоках разных типов не совпадают.

Последняя строка входного файла содержит новую рекламную надпись \(s\) — строку, состоящую только из строчных латинских букв (\(1\le|s|\le200\)). Можно считать, что на складе находится неограниченное число блоков каждого типа.

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

В первой строке выходного файла необходимо вывести натуральное число \(K\) — минимальное количество блоков, которое нужно использовать для составления новой рекламы. Следующая строка должна содержать \(K\) чисел — номера типов блоков, которые нужно для этого использовать, перечисляя их сверху вниз. Типы блоков нумеруются с единицы в порядке их задания во входном файле.

Если ответов несколько, выведите любой из них. Если решения не существует, выведите в выходной файл число \(-1\).

Примеры
Входные данные
3 4
tiet
oink
ezin
zenit
Выходные данные
3
1 2 3
Входные данные
2 11
sillysample
happysample
sam
Выходные данные
1
2
Входные данные
2 3
baa
aab
bb
Выходные данные
2
2 2
Входные данные
2 3
aaa
bbb
cc
Выходные данные
-1
ограничение по времени на тест
1.0 second;
ограничение по памяти на тест
64 megabytes

Некоторые банки выпускают банковские карты, которые могут использоваться для оплаты проезда в метро. При проходе через турникеты по этой карте каждый проход фиксируется, подсчитывается количество проходов за календарный месяц и раз в месяц с карточки списываются деньги в соответствии с тем, сколько было сделано проходов по специальным тарифам (приведены тарифы по состоянию на 15.10.2009):

Кол-во поездок Стоимость (руб.) Кол-во поездок Стоимость (руб.) Кол-во поездок Стоимость (руб.) Кол-во поездок Стоимость (руб.)
1 22 19 362 37 586.13 55 804.38
2 44 20 380 38 598.25 56 816.5
3 64.33 21 392.13 39 610.38 57 828.63
4 84.67 22 404.25 40 622.5 58 840.75
5 105 23 416.38 41 634.63 59 852.88
6 124 24 428.5 42 646.75 60 865
7 143 25 440.63 43 658.88 61 863.5
8 162 26 452.75 44 671 62 862
9 181 27 464.88 45 683.13 63 860.5
10 200 28 477 46 695.25 64 859
11 218 29 489.13 47 707.38 65 857.5
12 236 30 501.25 48 719.5 66 856
13 254 31 513.38 49 731.63 67 854.5
14 272 32 525.5 50 743.75 68 853
15 290 33 537.63 51 755.88 69 851.5
16 308 34 549.75 52 768 70 850
17 326 35 561.88 53 780.13    
18 344 36 574 54 792.25    

При совершении более 70 поездок с карточки списывается 850 рублей за 70 поездок, и по 15.71 за каждую поездку начиная с 71-й. Кроме того, если за месяц по карточке был совершен хотя бы один проход, то списывается банковская комиссия в размере 10 рублей (независимо от числа проходов), если же проходов по карте не было, то комиссия не списывается.

Родители завели двум братьям Пете и Васе по такой карточке. Петя и Вася иногда ездят вместе, а иногда - порознь. Естественно, когда они едут не вместе, то каждый из них пользуется своей карточкой. Когда же они едут вместе, они могут как воспользоваться каждый своей карточкой, так и оба пройти по одной из карточек (совершив два прохода по этой карточке).

Кроме того, они заметили, что в некоторых случаях бывает выгодно совершать лишние проходы по карточке (например, если по карточке за месяц совершено 69 проходов, то надо сделать 70-й - списанная сумма в этом случае окажется меньше).

Известно, что в наступающем месяце Вася собирается сделать A самостоятельных поездок, Петя - B самостоятельных поездок, и еще С поездок они сделают вместе (то есть всего они сделают A+B+2C проходов через турникеты). Напишите программу, которая по заданным числам A, B и C определит минимальную сумму, которую они могут потратить (с учетом банковских комиссий, при необходимости совершив лишние проходы через турникеты).

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

Вводятся целые числа \(A\), \(B\), \(C\) (каждое из них из диапазона от 0 до 1000).

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

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

Примеры
Входные данные
1 1 0
Выходные данные
64.00
Входные данные
59 0 0
Выходные данные
860.00
Входные данные
10 10 10
Выходные данные
721.25
Входные данные
0 0 30
Выходные данные
860.00
ограничение по времени на тест
1.0 second;
ограничение по памяти на тест
64 megabytes

Новый кодовый замок для владельцев нетбуков представляет головоломку не только для грабителей, но и для владельцев. На табло замка все время высвечивается некоторая комбинация нулей и единиц. Замок откроется, если на табло высветится некоторая определенная комбинация. Получить требуемую комбинацию из текущей можно нажимая в нужной последовательности кнопки, на которых написано 0 и 1 соответственно.

Если нажать кнопку с нулем, то текущая комбинация на табло сдвигается на одну позицию вправо (правая цифра при этом исчезает), а в самом левом разряде записывается 0. При нажатии на кнопку с единицей происходит то же самое, только в левый разряд записывается 1.

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

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

Первая строка содержит текущую последовательность цифр, вторая строка — последовательность, которую требуется получить. Гарантируется, что обе последовательности не пустые, имеют одинаковую длину, не превосходящую 100 000, и состоят только из нулей и единиц. Цифры в строках записаны подряд (без пробелов).

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

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

Примеры
Входные данные
1101
1011
Выходные данные
2
Входные данные
0000
1111
Выходные данные
4
ограничение по времени на тест
1.0 second;
ограничение по памяти на тест
64 megabytes

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

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

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

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

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

Сначала вводится число N — количество учеников (0 < N < 100001). Далее идут в строго возрастающем порядке координаты домов учеников — целые числа, не превосходящие 2∙109 по модулю.

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

Выведите одно целое число — координату точки, в которой лучше всего построить школу. Если ответов несколько, выведите любой из них.

Примеры
Входные данные
4
1 2 3 4
Выходные данные
3
Входные данные
3
-1 0 1
Выходные данные
0
ограничение по времени на тест
2.0 second;
ограничение по памяти на тест
64 megabytes

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

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

Вводится одно натуральное число k, не превосходящее 7.

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

Вывести одно натуральное число — время в минутах.

Примеры
Входные данные
3
Выходные данные
10

Страница: << 14 15 16 17 18 19 20 >> Отображать по:
Выбрано
:
Отменить
|
Добавить в контест