Python. Задачи
В данном разделе приведены задачи, позволяющие освоить простейшие алгоритмы, а также задачи, которые могут встретиться на ЕГЭ.
Для некоторых задач требуется скачать тестовые файлы, которые должны быть использованы для тестирования решения. Файлы следует сохранять в вашем рабочем каталоге. В решениях пособия используется каталог c:\work.
Задачи для самостоятельного решения
-
В файле записаны слова по одному в каждой строке. Вывести все слова максимальной длины по одному в каждой строке.
-
В файле записаны слова по одному в каждой строке. Вывести все слова из одной буквы, затем из двух и т.д., пока не будут выведены все слова.
-
Дан список из целых чисел. Для каждого входящего в список числа вывести сколько раз оно встречается в списке. Если число встречается в списке несколько раз, то вывести его только один раз. Также вывести количество различных чисел в списке.
-
Задана логическая функция F(a, b) = ¬a ∨ b. Вывести таблицу истинности функции F(a, b). Необходимо для каждого набора аргументов вычислить и вывести значение функции.
-
Пользователь вводит натуральное число N. Вывести все такие значения среди чисел 1..N, запись которых совпадает с последними цифрами их квадрата. Например 6, 36.
-
Вывести все натуральные из диапазона [1000, 1100], в записи которых нет одинаковых цифр.
-
Заполнить двумерный массив (таблицу) чисел размером M x N, так чтобы числа от 1 до M⋅N шли в нем по возрастанию "ходом быка": "бык" начинает ход в левом верхнем углу и идет по строке направо, затем делает шаг вниз и по второй строке идет справа налево, в третьей строке снова слева направо и т.д. Вывести заполненную таблицу.
-
Текстовый файл состоит не более чем из 1000000 символов X, Y и Z. Определить и вывести максимальное количество идущих подряд одинаковых символов.
-
Текстовый файл состоит не более чем из 1000000 символов X, Y и Z. Определите максимальное количество идущих подряд символов, среди которых каждые два соседних различны.
-
Пользователь вводит четыре числа. Найти и вывести наибольший общий делитель этих чисел.
-
Вывести все простые числа из диапазона [1546300, 1546400].
-
Пользователь вводит последовательность целых чисел, которую заканчивает вводом нуля. Найти в последовательности максимум и сколько раз он встречается в ней.
-
Вывести всех "близнецов" (так называются простые числа, разность между которыми равна двум) из диапазона 2..N, где число N вводит пользователь.
-
Дан список целых чисел, найти элементы с максимальным и вторым по величине значениями.
[-2, 4 , 6, -3, 7, 9, 5, 8, 0, -1] -
Подсчитать сумму всех положительных элементов списка и количество всех отрицательных элементов.
[-2, 4 , 6, -3, 7, 9, 5, 8, 0, -1] -
Проверить упорядоченность и порядок (возрастание или убывание) введенного пользователем списка из 10 элементов.
-
Выполнить сортировку списка, введенного пользователем, по возрастанию методом поиска наименьшего элемента.
-
У натурального числа, введенного пользователем, найти и вывести наименьший делитель больше 1.
-
Разложить натуральное число, введенное пользователем, на множители.
-
Отсортировать массив целых чисел, введенных пользователем, методом "пузырька".
-
Отсортировать список из целых чисел, введенных пользователем, методом простых вставок.
-
Целочисленный список из 10 элементов вводит пользователь. Элементы списка могут принимают значения от 0 до 1000. Найти и вывести минимальное значение среди элементов списка, которые четные и делятся на 3.
-
Целочисленный список из 10 элементов вводит пользователь. Подсчитать и вывести сумму всех отрицательных элементов списка, которые делятся на 5 и не делятся на 10. Если таких элементов нет, то вывести сообщение об этом.
-
Целочисленный список из 10 элементов вводит пользователь. Элементы списка могут принимать значения от 0 до 100 - сумма баллов за год за выполнение домашних заданий по информатике учащимися. Для получения положительной оценки необходимо было набрать 40 баллов. Найти и вывести минимальный балл среди учащихся, получивших положительную оценку.
-
Целочисленный список из 10 элементов вводит пользователь. Пользователь также вводит число X. Найти и вывести минимальный индекс элемента, равного X, или сообщение, что такого элемента нет.
-
Целочисленный список из 10 элементов вводит пользователь. Найти и вывести сумму наибольшей возрастающей последовательности подряд идущих элементов. Если таких последовательностей больше, чем одна, то вывести сумму первой из них.
-
Рассматривается множество целых чисел, принадлежащих числовому отрезку [1016; 7937], которые делятся на 3 и не делятся на 7, 17, 19, 27. Найдите количество таких чисел и максимальное из них.
-
Рассматривается множество целых чисел, принадлежащих числовому отрезку [2047; 9532], которые делятся на 5 и не делятся на 6, 10, 16, 27. Найдите количество таких чисел и максимальное из них.
-
Рассматривается множество целых чисел, принадлежащих числовому отрезку [3052; 7445], которые делятся на 4 или 5 и не делятся на 7, 9, 13, 23. Найдите количество таких чисел и максимальное из них.
-
Рассматривается множество целых чисел, принадлежащих числовому отрезку [3052; 7445], которые делятся на 3 и 4 и не делятся на 8, 11, 13. Найдите количество таких чисел и минимальное из них.
-
Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [174457; 174505], числа, имеющие ровно два различных натуральных делителя, не считая единицы и самого числа. Для каждого найденного числа запишите эти два делителя в таблицу на экране с новой строки в порядке возрастания произведения этих двух делителей. Делители в строке таблицы также должны следовать в порядке возрастания.
-
Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [145762; 145880], числа, имеющие ровно четыре различных натуральных делителя, не считая единицы и самого числа. Для каждого найденного числа запишите эти делители в таблицу на экране с новой строки в порядке заданной числовой последовательности. Делители в строке таблицы также должны следовать в порядке возрастания.
-
Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [121363; 121431], простые числа. Для каждого найденного простого числа запишите его порядковый номер в заданной последовательности и само число в таблицу на экране с новой строки в порядке возрастания порядковых номеров.
-
Системный администратор раз в неделю создаёт архив пользовательских файлов. Однако объём диска, куда он помещает архив, может быть меньше, чем суммарный объём архивируемых файлов. Известно, какой объём занимает файл каждого пользователя. По заданной информации об объёме файлов пользователей и свободном объёме на архивном диске определите максимальное число пользователей, чьи файлы можно сохранить в архиве, а также максимальный размер имеющегося файла, который может быть сохранён в архиве, при условии, что сохранены файлы максимально возможного числа пользователей.
Запишите в ответе два числа: сначала наибольшее число пользователей, чьи файлы могут быть помещены в архив, затем максимальный размер имеющегося файла, который может быть сохранён в архиве, при условии, что сохранены файлы максимально возможного числа пользователей. -
Системный администратор раз в неделю создаёт архив пользовательских файлов. Однако объём диска, куда он помещает архив, может быть меньше, чем суммарный объём архивируемых файлов. Администратор хочет сэкономить место на диске для хранения архивов и для этого выбирает 4 наибольших по объему архивов и удаляет их, тем самым сэкономив место на диске. Известно, какой объём занимает файл каждого пользователя. По заданной информации об объёме файлов пользователей, определите сэкономленное администратором место.
-
Системный администратор раз в неделю создаёт архив пользовательских файлов. Однако объём диска, куда он помещает архив, может быть меньше, чем суммарный объём архивируемых файлов. Известно, какой объём занимает файл каждого пользователя. По заданной информации об объёме файлов пользователей и свободном объёме на архивном диске определите минимальное число пользователей, чьи файлы нельзя сохранить в архиве..
-
Имеется набор данных, состоящий из пар положительных целых чисел. Необходимо выбрать из каждой пары ровно одно число так, чтобы сумма всех выбранных чисел не делилась на 3 и при этом была максимально возможной. Гарантируется, что искомую сумму получить можно. Программа должна напечатать одно число — максимально возможную сумму, соответствующую условиям задачи.
-
Имеется набор данных, состоящих из пар положительных целых чисел. Необходимо выбрать из каждой пары ровно одно число так, чтобы сумма всех выбранных чисел не делилась на 6 и при этом была минимально возможной. Гарантируется, что искомую сумму получить можно. Программа должна напечатать одно число — минимально возможную сумму, соответствующую условиям задачи.
-
Гоночная трасса состоит из двух основных дорог и нескольких переездов, позволяющих перейти с одной дороги на другую. На всех участках, включая переезды, движение разрешено только в одну сторону, поэтому переезд возможен только с дороги A на дорогу B. Гонщик стартует в точке A0 и должен финишировать в точке BN. Он знает, за какое время сможет пройти каждый участок пути по каждой дороге, то есть время прохождения участков A0A1, A1A2, …, AN-1AN, B0B1, B1B2, …, BN-1BN. Время прохождения всех переездов A0B0, A1B1, …, ANBN одинаково и известно гонщику. Необходимо определить, за какое минимальное время гонщик сможет пройти трассу.
-
На вход программы поступает последовательность из n целых положительных чисел. Рассматриваются все пары элементов последовательности ai и aj, такие что i < j и ai> aj (первый элемент пары больше второго; i и j — порядковые номера чисел в последовательности входных данных). Среди пар, удовлетворяющих этому условию, необходимо найти и напечатать пару с максимальной суммой элементов, которая делится на m = 120. Если среди найденных пар максимальную сумму имеют несколько, то необходимо вывести последнюю их них.
-
На вход программы поступает последовательность из N целых положительных чисел. Известно, что все числа в последовательности различны. Необходимо составить программу, которая подсчитывает количество пар различных элементов последовательности, произведение которых делится на 51. Элементы пары не обязательно должны стоять в последовательности рядом, порядок элементов в паре не важен.
-
Дед Мороз и Снегурочка приходят на детские утренники с мешком конфет. Дед Мороз делит конфеты поровну между всеми присутствующими детьми (детей на утреннике никогда не бывает больше 100), а оставшиеся конфеты отдает Снегурочке. Снегурочка каждый раз записывает в блокнот количество полученных конфет. Если конфеты разделились между всеми детьми без остатка, Снегурочка ничего не получает и ничего не записывает. Когда утренники закончились, Деду Морозу стало интересно, какое число чаще всего записывала Снегурочка. Дед Мороз и Снегурочка — волшебные, поэтому число утренников N, на которых они побывали, может быть очень большим. Вывести число, которое Снегурочка записывала чаще всего.
-
Дана последовательность N целых положительных чисел. Рассматриваются все пары элементов последовательности, находящихся на расстоянии не меньше 10 (разница в индексах элементов должна быть 10 или более). Необходимо определить количество пар, произведение чисел в которых кратно 10.