Массивы(232 задач)
Типы данных(356 задач)
Циклы(177 задач)
Условный оператор (if)(164 задач)
Python(260 задач)
Standard Template Library(2 задач)
Оргкомитет Московской олимпиады по информатике решил издать книгу с решениями олимпиадных задач сразу на двух языках – на Паскале и на Си. При этом тексты решений на Паскале решили напечатать с одной стороны книги, а на Си – с другой стороны. Таким образом книгу стало можно читать как с начала, так и с конца, предварительно ее перевернув.
Тексты решений на Паскале заняли N первых страниц, которые пронумеровали от 1 до N. А тексты на Си – M последних страниц, которые пронумеровали числами от 0 (последняя страница) до M–1.
Книга состоит из отдельных листов. У листа две стороны, на каждой из которых печатается одна страница книги. При необходимости, между текстом на Паскале и текстом на Си оставляется одна пустая страница. Листы строго по порядку сшиваются и образуют книгу.
Например, если N=5 и M=3 страницы книги идут в следующем порядке. Сначала страницы решений на Паскале: 1 2 3 4 5, затем – страницы решений на Си – 2 1 0. Здесь на первый лист попадают страницы номер 1 и 2 решений на Паскале, на второй – 3 и 4, на третий — страница 5 решений на Паскале и страница 2 решений на Си, и, наконец, на четвертый лист — страницы 1 и 0 решений на Си (ровно в таком порядке!).
Если же, например, N=2 и M=3, то на первом листе будут напечатаны страницы 1 и 2 решений на Паскале, на втором – пустая страница и страница 2 решений на Си, на третьем – страницы 1 и 0 решений на Си.
Напишите программу, которая по номеру листа определяет, решения на каком языке и какие номера страниц должны быть напечатаны на этом листе.
Во входном файле содержатся три числа: N, M и номер листа P (1≤N≤1000, 1≤M≤1000, 1≤P≤1000).
Выходной файл должен содержать две строки. В первой строке должно идти описание той стороны листа, которая будет идти в книге раньше, во второй строке — описание второй стороны листа.
Описание страницы должно состоять из заглавной английской буквы P (если это страница решения на Паскале) или C (если это страница решения на C), ровно одного пробела и номера соответствующей страницы.
Если страница должна быть оставлена пустой, то в соответствующей строке должны быть напечатаны прочерки (символ минус “–“) как вместо буквы, обозначающей язык решений, так и вместо номера страницы (см. примеры).
Если листа с таким номером в книге не будет вообще, в обеих строках должны идти описания, соответствующие пустой странице.
5 3 2
P 3 P 4
5 3 3
P 5 C 2
5 3 4
C 1 C 0
2 3 2
- - C 2
2 3 10
- - - -
На бумаге нарисовали клетчатое поле NxM клеток. В каждой клетке нарисовали стрелочку в одном из четырех направлений «вправо», «вверх», «влево» или «вниз».
← | → | → | ↓ | ↑ |
→ | ↑ | ↓ | ← | → |
↓ | ↑ | → | → | ↓ |
→ | ↑ | ← | ← | ← |
← | → | ↓ | ↓ | ↓ |
↑ | ↑ | ← | ↓ | ↑ |
Дальше в некоторую клетку этого поля ставят фишку. Затем эту фишку сдвигают в соседнюю клетку в направлении стрелочки, нарисованной в клетке, где стоит фишка. Затем ее снова сдвигают по стрелке, нарисованной в той клетке, где она оказалась. Так продолжается до тех пор, пока фишка не окажется за пределами поля. Однако возможно, что фишка будет бесконечно ходить по полю и никогда не выйдет за его пределы.
Напишите программу, которая по заданному полю определит количество клеток, начав с которых фишка никогда не покинет пределы поля.
Во входном файле заданы сначала размеры поля – число строк N и число столбцов M (1≤N≤1000, 1≤M≤1000). Далее идет N строк по M чисел в каждой, задающих направления стрелочек в клетках. Число 1 обозначает стрелочку вправо, 2 – вверх, 3 – влево, 4 – вниз. Числа в строке разделяются пробелами.
В выходной файл выведите одно число – количество клеток, начав с которых фишка никогда не покинет пределы поля.
Комментарии к примерам тестов.
Пример №1.Соответствует приведенному рисунку. Клетки, начавс которых, фишка никогда не покинет пределов поля на рисунке выделены серым цветом.
6 5 3 1 1 4 2 1 2 4 3 1 4 2 1 1 4 1 2 3 3 3 3 1 4 4 4 2 2 3 4 2
23
2 2 1 2 3 4
0
Заданы целые числа X, Y, P, Q (–10100 <= X, Y, P, Q <= 10100). Требуется проверить равенство XY = PQ. Напомним, что ab определяется следующим образом:
Во входном файле записаны числа X, Y, P, Q, каждое в отдельной строке.
Выведите слово correct, если данное равенство для полученных входных данных выполняется, или incorrect, если равенство не выполняется, или хотя бы одна из степеней не определена.
2 4 4 2
correct
2 3 3 2
incorrect
Некоторые банки выпускают банковские карты, которые могут использоваться для оплаты проезда в метро. При проходе через турникеты по этой карте каждый проход фиксируется, подсчитывается количество проходов за календарный месяц и раз в месяц с карточки списываются деньги в соответствии с тем, сколько было сделано проходов по специальным тарифам (приведены тарифы по состоянию на 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 |
Родители завели двум братьям Пете и Васе по такой карточке. Петя и Вася иногда ездят вместе, а иногда - порознь. Естественно, когда они едут не вместе, то каждый из них пользуется своей карточкой. Когда же они едут вместе, они могут как воспользоваться каждый своей карточкой, так и оба пройти по одной из карточек (совершив два прохода по этой карточке).
Кроме того, они заметили, что в некоторых случаях бывает выгодно совершать лишние проходы по карточке (например, если по карточке за месяц совершено 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
Новый кодовый замок для владельцев нетбуков представляет головоломку не только для грабителей, но и для владельцев. На табло замка все время высвечивается некоторая комбинация нулей и единиц. Замок откроется, если на табло высветится некоторая определенная комбинация. Получить требуемую комбинацию из текущей можно нажимая в нужной последовательности кнопки, на которых написано 0 и 1 соответственно.
Если нажать кнопку с нулем, то текущая комбинация на табло сдвигается на одну позицию вправо (правая цифра при этом исчезает), а в самом левом разряде записывается 0. При нажатии на кнопку с единицей происходит то же самое, только в левый разряд записывается 1.
Известно, какая комбинация цифр сейчас находится на табло, и какую комбинацию требуется получить, чтобы открыть замок. Помогите владельцу нетбука — определите, за какое минимальное количество нажатий на кнопки можно получить требуемую комбинацию.
Первая строка содержит текущую последовательность цифр, вторая строка — последовательность, которую требуется получить. Гарантируется, что обе последовательности не пустые, имеют одинаковую длину, не превосходящую 100 000, и состоят только из нулей и единиц. Цифры в строках записаны подряд (без пробелов).
Выведите минимальное количество нажатий на кнопки, с помощью которого можно решить поставленную задачу.
1101 1011
2
0000 1111
4