Во всех задачах этого листка программа получает на вход строку из целых чисел, разделенных пробелами. В конце строки также могут быть пробелы. Данную строку необходимо считать в список целых чисел.
Выведите все элементы списка с четными индексами
(то есть A[0]
, A[2]
, A[4]
, ...).
В этой задаче нельзя использовать инструкцию if.
Ввод | Вывод |
---|---|
1 2 3 4 5 |
1 3 5 |
Выведите все четные элементы списка.
Ввод | Вывод |
---|---|
1 2 2 3 3 3 4 |
2 2 4 |
Дан список чисел. Выведите все элементы списка, которые больше предыдущего элемента.
Ввод | Вывод |
---|---|
1 5 2 4 3 |
5 4 |
Дан список чисел. Выведите значение наибольшего элемента в списке, а затем индекс этого элемента в списке. Если наибольших элементов несколько, выведите индекс первого из них. Гарантируется, что в списке есть хотя бы один элемент.
Ввод | Вывод |
---|---|
1 2 3 2 1 |
3 2 |
Дан список чисел. Определите, сколько в этом списке элементов, которые больше двух своих соседей и выведите количество таких элементов.
Ввод | Вывод |
---|---|
1 0 1 0 1 |
1 |
Выведите значение наименьшего из всех положительных элементов в списке. Известно, что в списке есть хотя бы один положительный элемент, а значения всех элементов списка по модулю не превосходят 1000.
Ввод | Вывод |
---|---|
5 -4 3 -2 1 |
1 |
Дан список чисел и некоторое число. Найдите в данном списке элемент, ближайший к заданному.
В первой строке заданы элементы списка (целые числа, не превосходящие по модулю \(10^9\)). Гарантируется, что в списке есть хотя бы один элемент.
Во второй строке дано одно целое число \(x\), не превосходящее по модулю \(10^9\)
Выведите значение элемента списка, ближайшее к \(x\). Если таких чисел несколько, выведите первое из них.
Ввод | Вывод |
---|---|
6 5 4 2 1 |
4 |
1 2 4 5 6 |
2 |
1 2 3 |
2 |
Выведите значение наименьшего нечетного элемента списка, а если в списке
нет нечетных элементов — выведите число 0
.
В этой задаче вам ничего не известно о входных числах. Решения, работающие только при каких-то предположениях о размере входного числа, приниматься не будут.
В решении этой задачи нельзя использовать вспомогательный список.
Ввод | Вывод |
---|---|
0 1 2 3 4 |
1 |
2 4 6 8 10 |
0 |
Выведите индекс первого положительного элемента в данном списке. Он обязательно есть в списке.
В этой задаче нельзя пользоваться инструкцией if. Элементы списка нужно просматривать с начала до нахождения нужного элемента.
Ввод | Вывод |
---|---|
-1 0 1 |
2 |
1 |
0 |
Выведите индекс первого положительного элемента в данном списке. Если такого элемента нет, программа должна вывести число -1.
В этой задаче нельзя пользоваться инструкцией if внутри цикла.
Ввод | Вывод |
---|---|
-1 0 1 |
2 |
0 |
-1 |
Андрей перешёл в другую школу. На уроке физкультуры ему понадобилось определить своё место в строю. Помогите ему это сделать.
Программа получает на вход невозрастающую последовательность натуральных чисел, означающих рост каждого человека в строю. После этого вводится число X — рост Андрея. Все числа во входных данных натуральные и не превышают 200.
Выведите номер, под которым Андрей должен встать в строй. Если в строю есть люди с одинаковым ростом, таким же, как у Андрея, то он должен встать после них.
В этой задаче нельзя использовать цикл for, инструкцию break, инструкцию if. Задача решается одним циклом while.
Ввод | Вывод |
---|---|
165 163 160 160 157 157 155 154 |
3 |
165 163 160 160 157 157 155 154 |
5 |
До 2020 года у людей была традиция — при появлении в продаже нового товара, а также при распродажах старых товаров по сниженным ценам, выстраиваться в длинные очереди перед магазином, рассчитывая приобрести новинку или товар по дешёвке. Говорят, что где-то такая традиция сохранилась и в настоящее время.
В магазине продают революционные игровые приставки PlayStation. В очередь в магазин выстроилось \(n\) покупателей, каждый из которых хочет купить \(a_i\gt 0\) приставок. В первой строке входных данных записаны значения \(a_i\) через пробел в том порядке, в котором они стоят в очереди.
Магазин обслуживает покупателей строго в порядке очереди до тех пор, пока не кончатся покупатели или приставки. Всего в магазине имеется \(K\gt 0\) приставок, это значение записано в следующей строке.
Определите, сколько человек уйдёт с покупками. Каждый покупатель покупает столько приставок, сколько он хочет купить, но последнему покупателю может достаться меньше желаемого числа приставок.
Ввод | Вывод |
---|---|
3 5 7 2 4 6 |
3 |
Дан список чисел. Если в нем есть два соседних элемента одного знака (то есть оба положительных или оба отрицательных), выведите эти числа. Если соседних элементов одного знака нет - не выводите ничего. Если таких пар соседей несколько - выведите первую такую пару.
В этой задаче нужно использовать цикл while, нельзя использовать инструкции break и инструкцию if внутри цикла.
Ввод | Вывод |
---|---|
-1 2 3 -1 -2 |
2 3 |
Переставьте элементы данного списка в обратном порядке, затем выведите элементы полученного списка.
Вам нужно не просто вывести элементы списка от первого до последнего,
а требуется изменить значения элементов самого списка, поменяв местами
A[0]
c A[n - 1]
,
A[1]
с A[n - 2]
, а затем вывести элементы списка подряд с начала.
В этой задаче нельзя использовать срезы и вспомогательный список.
Ввод | Вывод |
---|---|
1 2 3 4 5 |
5 4 3 2 1 |
Переставьте соседние элементы списка (A[0]
c A[1]
,
A[2]
c A[3]
и т.д.).
Если элементов нечетное число, то последний элемент остается на своем месте.
В решении этой задачи нельзя использовать вспомогательный список.
Ввод | Вывод |
---|---|
1 2 3 4 5 |
2 1 4 3 5 |
Дан список. Поменяйте местами минимальный и максимальный элемент этого списка. Гарантируется, что в списке есть хотя бы один элемент. Гарантируется, что в списке ровно один элемент, равный минимальному, и ровно один элемент, равный максимальному.
Ввод | Вывод |
---|---|
3 4 5 2 1 |
3 4 1 2 5 |
Циклически сдвиньте элементы списка вправо
(A[0]
переходит на место A[1]
,
A[1]
на место A[2]
, ...,
последний элемент переходит на место A[0]
).
В этой задаче нельзя использовать срезы и вспомогательный список.
Гарантируется, что в списке есть хотя бы один элемент.
Задача должна быть решена с использованием минимально
возможного количества операций присваивания
(при этом операция присваивания вида a, b = b, a
считается за две операции).
Ввод | Вывод |
---|---|
1 2 3 4 5 |
5 1 2 3 4 |
Дан список чисел. Посчитайте, сколько в нем пар элементов, равных друг другу. Считается, что любые два элемента, равные друг другу образуют одну пару, которую необходимо посчитать, то есть нужно найти количество таких пар \((i, j)\), что \(i\lt j\) и \(a_i=a_j\).
Ввод | Вывод |
---|---|
1 2 3 2 3 |
2 |
1 1 1 1 1 |
10 |
Дан список целых чисел, содержащий как минимум два элемента. Найдите в нем два ближайших элемента (то есть два элемента с минимальной абсолютной разностью).
Программа должа вывести два числа: индексы двух элементов массива, абсолютная величина разности которых минимальна.
Ввод | Вывод |
---|---|
7 0 4 2 5 9 |
2 4 |
Дан список. Посчитайте, сколько в нем различных элементов, не изменяя самого списка, не используя дополнительные списки (или строки) и срезы.
Ввод | Вывод |
---|---|
3 2 1 2 3 |
3 |
В списке — нечетное число элементов, при этом все элементы различны. Найдите медиану списка: элемент, который стоял бы ровно посередине списка, если список отсортировать.
При решении этой задачи нельзя модифицировать данный список (в том числе и сортировать его), использовать вспомогательные списки.
Программа должна вывести единственное число — значение медианного элемента в списке.
Ввод | Вывод |
---|---|
6 1 9 2 3 4 8 |
4 |
Дан список. Выведите те его элементы, которые встречаются в списке только один раз. Элементы нужно выводить в том порядке, в котором они встречаются в списке.
В этой задаче нельзя модифицировать список, использовать вспомогательные списки, строки, срезы.
Ввод | Вывод |
---|---|
1 2 2 3 3 3 |
1 |
Дан список. Не изменяя его и не используя дополнительные списки, определите, какое число в этом списке встречается чаще всего.
Если таких чисел несколько, выведите любое из них.
Ввод | Вывод |
---|---|
1 2 3 2 3 3 |
3 |
Назовем последовательность чисел последовательностью \(k\)-боначчи, если каждый элемент этой последовательности является суммой \(k\) предыдущих членов последовательности. В частности, последовательность \(2\)-боначчи является последовательностью Фибоначчи.
Более формально, \(i-й\) элемент последовательности \(k_i\) равен 1, если \(0\le i\le k - 1\) и равен сумме \(k\) предыдущих членов последовательности \(k_{i-1} + k_{i-2} + ... + k_{i-k}\) при \(i\ge k\).
Даны два числа \(k\) и \(n\) (\(k\ge 2\), \(n\ge0\)). Вычислите \(n\)-й член последовательности \(k\)-боначчи \(k_n\).
Ввод | Вывод |
---|---|
3 6 |
17 |
100 0 |
1 |
\(N\) кузнечиков стоят в ряд. Для каждого кузнечика задана числовая характеристика — длина его прыжка. Если длина прыжка кузнечика равна \(l\), то он за один прыжок перепрыгивает через \(l\) других кузнечиков.
Каждую секунду последний кузнечик прыгает к началу ряда, перепрыгивает через столько кузнечиков, чему равна длина его прыжка, и становится между двумя другими кузнечиками.
В первой строке входных данных задана расстановка кузнечиков (длины их прыжков). Во второй строке входных данных задано число секунд \(t\). Опеределите и выведите на экран расстановку кузнечиков через \(t\) секунд. Все длины прыжков — натуральные числа, меньшие, чем число кузнечиков в ряду.
В этой задаче нельзя использовать срезы, методы, изменяющие количество элементов в списке.
Ввод | Вывод |
---|---|
1 2 3 4 2 |
4 1 2 2 3 |
Известно, что на доске 8×8 можно расставить 8 ферзей так, чтобы они не били друг друга. Вам дана расстановка 8 ферзей на доске, определите, есть ли среди них пара бьющих друг друга.
Программа получает на вход восемь пар чисел, каждое число от 1 до 8 - координаты 8 ферзей.
Если ферзи не бьют друг друга, выведите слово NO
, иначе выведите YES
.
Ввод | Вывод |
---|---|
1 7 |
NO |
1 8 |
YES |
Дан массив из \(N\) (\(1 \le N \le 100000\)) целых чисел и число \(K\) (\(|K| < 100000 \)). Циклически сдвиньте массив на \(|K|\) элементов вправо, если \(K\) – положительное и влево, если отрицательное число.
Программа получает на вход массив из \(N\) элементов, затем число \(K\).
Решение должно иметь сложность \(O(N)\), то есть не должно зависеть от \(K\). Дополнительным списком пользоваться нельзя (и увеличивать размер списка тоже нельзя).
Ввод | Вывод |
---|---|
5 3 7 4 6 |
7 4 6 5 3 |
Дано число. В этом числе необходимо изменить одну цифру таким образом, чтобы новое число делилось на 3 и было бы максимально возможным. В исходном числе нужно обязательно изменить одну цифру, даже если исходное число уже делилось на 3.
Программа получает на вход одно длинное натуральное число. Длина числа может достигать миллиона цифр.
Программа должна вывести другое натуральное число, удовлетворяющее условиям:
Ввод | Вывод |
---|---|
123 |
723 |