---> 240 задач <---
Источники
    Личные олимпиады(938 задач)
    Командные олимпиады(684 задач)
Страница: << 40 41 42 43 44 45 46 >> Отображать по:
ограничение по времени на тест
1.0 second;
ограничение по памяти на тест
128 megabytes

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

Стоимость стакана чая и кофе в автомате предполагается установить равной пяти рублям. Автоматы будут принимать монеты по 5 и 10 рублей, а также купюры в 10, 50 и 100 рублей. Когда пассажиру надо выдавать сдачу (т.е. когда пассажир бросил в автомат десятирублёвую монету или 10-, 50- или 100- рублёвую купюру), автомат выдаёт сдачу пятирублёвыми монетами; если же пассажир бросил в автомат пятирублёвую монету, то автомат её сохраняет и может использовать для сдачи следующим пассажирам. Ясно, что, чтобы обеспечить возможность выдачи сдачи всем покупателям, может потребоваться изначально загрузить в автомат некоторое количество пятирублёвых монет. Сейчас на маршрутках фирмы проходят испытания с целью определить минимальное количество монет, которые надо загрузить в автомат перед выездом маршрутки в рейс. Вам дан протокол одного из таких испытаний: известен порядок, в котором пассажиры оплачивали свои покупки различными монетами и купюрами. Определите, какое минимальное количество пятирублёвых монет должно было изначально находиться в автомате, чтобы всем пассажирам хватило сдачи.

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

В первой строке входного файла находится одно натуральное число N — количество покупок в автомате, которые были совершены в ходе испытания (1 ≤ N ≤ 50000). Во второй строке находятся N натуральных чисел, каждое из которых равно номиналу монеты или купюры, которую использовал очередной покупатель для оплаты; каждый номинал может принимать одно из четырёх значений: 5, 10, 50 или 100.

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

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

Примеры
Входные данные
3
10 5 100
Выходные данные
19
Входные данные
3
5 5 10
Выходные данные
0
Входные данные
4
50 5 5 5
Выходные данные
9
ограничение по времени на тест
2.0 second;
ограничение по памяти на тест
256 megabytes

Большое количество соревнований по разным видам спорта проводится по так называемой "олимпийской системе". В простейшем варианте она состоит в следующем. В турнире участвуют N = 2k игроков. Они получают номера от 1 до N, и в первом круге игрок 1 играет с игроком 2, игрок 3 с игроком 4 и т. д., игрок (N - 1) — с игроком N. Проигравшие в каждой паре выбывают из соревнований, а победители проходят во второй круг. Там победитель первой пары (т. е. игрок 1 или игрок 2) играет с победителем второй пары и т. д. Таким образом, в первом круге участвуют N = 2k игроков, во втором круге — = 2k - 1 и т. д., в финале участвуют два игрока.

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

В этой задаче вам нужно будет написать программу, находящую в некотором смысле оптимальный “рассев” игроков. Для этого рассмотрим следующую модель. Предположим, что участников можно упорядочить по силе так, что более сильный игрок всегда будет выигрывать у более слабого. В таком случае по изначальному “рассеву” игроков дальнейший ход соревнований будет однозначно определен. Тогда в качестве критерия оптимальности рассева” можно потребовать выполнение следующих условий: в финале играют двое сильнейших игроков, в полуфиналах играют четверо сильнейших игроков, и т. д.: в каждом круге играют только сильнейшие игроки (т. е. если в каком-то круге m мест, то в этом круге должны участвовать m сильнейших игроков). Вам дано N. Найдите любой оптимальный рассев N игроков.

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

Входной файл содержит одно число N. Гарантируется, что N — степень двойки и что 1 ≤ N ≤ 217.

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

Занумеруем игроков по их силе от 1 до N (1 — наиболее сильный, N — наименее). Выведите в выходной файл N чисел, i-ое из которых будет номером игрока, который должен стоять на i-ом месте в оптимальном рассеве. Если оптимального рассева не существует, выведите  - 1.

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

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

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

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

Первая строка входного файла содержит три числа: N, L и K, где N — количество студентов в группе, L — оптимальное “антисписывательное” расстояние, а K — количество пар студентов, которые могут друг у друга списывать. Далее следуют K строк по два числа в каждой — номера студентов, входящих в очередную пару. Студенты нумеруются от 1 до N. Все числа во входном файле натуральные и не превосходят 8 000 гарантируется, что L ≤ N.

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

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

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

У нас есть две кучки камней, изначально в каждой по одному камню. За один ход можно добавлять один камень в одну из кучек, если в ней меньше N камней. Игра заканчивается, когда в обеих кучках будет N камней.

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

Например, если в первой кучке 12 камней, а во второй – 7, то позиция хорошая, т.к. число 127 простое.

Ваша задача найти такую последовательность ходов, при которой можно перейти из начальной позиции (1, 1) в конечную (N, N) через максимально возможное число хороших позиций. Например, для N = 4 одна из искомых последовательностей такова: 1; 1 -> 2; 1 -> 3; 1 -> 4; 1 -> 4; 2 -> 4; 3 -> 4; 4

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

Входной файл содержит одно число N. Гарантируется, что 1 ≤ N ≤ 999.

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

Выведите максимально возможное число хороших позиций для данного N (в приведенном примере оно равно трем: 31, 41, 43).

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

Написать рекурсивную программу перевода целых чисел, не превосходящих 109, из десятичной системы счисления в P-ичную (1  ≤  P  ≤  36)

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

В первой строке вводится значение P, во второй строке — число, которое надо перевести.

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

Цифры, участвующие в записи числа в P-ичной системе счисления, соответствующие десятичным числам 10, 11, ..., P - 1, заменять на заглавные латинские буквы А, В, С, ... . Вывод осуществлять следующим образом: сначала выводится число в десятичной системе счисления(введённое), за ним система счисления, в которой оно записано, в круглых скобках, затем ставится знак "=" и аналогично выводится результат работы Вашей программы — число в P-ичной системе счисления. Весь вывод осуществляется без пробелов.

Примеры
Входные данные
3
123
Выходные данные
123(10)=11120(3)

Страница: << 40 41 42 43 44 45 46 >> Отображать по:
Выбрано
:
Отменить
|
Добавить в контест