Язык программирования

3 082 задачивместе с подтемами
Число у задачи — рейтинг сложности, слово рядом — насколько она трудна по сравнению с другими задачами такого же типа. Шкалы задач с ответом и задач с кодом между собой не сравниваются. Рядом — счётчики попыток: ✓ успешные, ✗ неуспешные.

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

Выручка по одной записи равна цене товара, умноженной на количество проданных единиц. Выручка магазина равна сумме выручек по всем его записям.

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

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

Оба набора данных поступают последовательно через стандартный ввод.

Сначала дано целое число N — количество товаров в справочнике (1 ≤ N ≤ 100000). Следующие N строк содержат по два целых числа: код товара и цену одной единицы в рублях. Все коды в справочнике различны.

Затем дано целое число M — количество записей в журнале продаж (1 ≤ M ≤ 100000). Следующие M строк содержат по три целых числа: номер магазина, код товара и количество проданных единиц.

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

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

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

В журнале продаж каждая запись содержит номер магазина, код товара и количество проданных единиц. Один товар может продаваться в нескольких магазинах. Для одной пары «магазин — товар» в журнале может быть несколько записей.

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

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

В первой строке дано целое число N — количество записей (1 ≤ N ≤ 100000).

В каждой из следующих N строк записаны три целых числа: номер магазина, код товара и количество проданных единиц. Каждое из этих чисел находится в диапазоне от 1 до 1000000000 включительно. Записи перечислены в произвольном порядке.

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

Выведите через пробел три целых числа: выбранный номер магазина, код товара и суммарное количество проданных единиц для этой пары.

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

  • два различных числа встречаются ровно по два раза, а ещё два различных числа — ровно по одному разу;
  • сумма четырёх элементов с повторяющимися значениями больше суммы двух элементов с неповторяющимися значениями.

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

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

В первой строке дано целое число N — количество строк таблицы (1 ≤ N ≤ 100 000).

Каждая из следующих N строк содержит ровно шесть целых чисел от 1 до 109 включительно, разделённых пробелами.

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

Выведите одно целое число — количество строк, удовлетворяющих обоим условиям.

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

Определите букву, которая была учтена наибольшее количество раз, и это количество. При равенстве выберите букву, которая стоит раньше в латинском алфавите.

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

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

В единственной строке дана строка длиной от 3 до 1 000 000 символов. Все символы — заглавные латинские буквы от A до Z.

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

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

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

Определите количество участников, чей зачётный результат не меньше заданного порога P. Учитываются только участники, у которых есть хотя бы одна запись во входных данных.

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

В первой строке даны два целых числа: количество попыток N и порог P (1 ≤ N ≤ 100 000, 0 ≤ P ≤ 100).

В каждой из следующих N строк записаны идентификатор участника и балл за одну попытку. Идентификатор — целое число от 1 до 109, балл — целое число от 0 до 100. Записи могут идти в любом порядке.

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

Выведите одно целое число — количество участников с зачётным результатом не меньше P.

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

Определите клиента, который передал наибольший суммарный объём данных за все свои запросы. Если таких клиентов несколько, выберите клиента с наименьшим идентификатором.

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

В первой строке дано целое число N — количество записей журнала (1 ≤ N ≤ 100 000).

В каждой из следующих N строк записаны два целых числа: идентификатор клиента и объём данных одного запроса. Оба числа находятся в диапазоне от 1 до 109 включительно. Записи могут идти в любом порядке.

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

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

Дана последовательность целых чисел. Найдите число, которое встречается в ней чаще всего, и количество его появлений.

Если наибольшая частота одинакова у нескольких чисел, выберите наименьшее из этих чисел.

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

В первой строке дано целое число N — количество элементов последовательности (1 ≤ N ≤ 100 000).

Во второй строке записаны N целых чисел через пробел. Каждое число находится в диапазоне от −109 до 109 включительно.

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

Выведите два целых числа через пробел: выбранное число и количество его появлений.

Дана последовательность целых чисел. Для каждого различного числа определите, сколько раз оно встречается в последовательности.

Выведите каждое различное число вместе с количеством его появлений. Числа в ответе должны идти по возрастанию.

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

В первой строке дано целое число N — количество элементов последовательности (1 ≤ N ≤ 100 000).

Во второй строке записаны N целых чисел через пробел. Каждое число находится в диапазоне от −109 до 109 включительно.

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

Для каждого различного числа выведите отдельную строку: само число и через пробел количество его появлений. Строки расположите по возрастанию чисел.

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

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

Скопируйте подготовленный код и допишите сохранение показания. Последний цикл уже выводит готовый результат в нужном порядке; сортировка используется только для вывода.

n = int(input())
last = {}
for _ in range(n):
    sensor, temperature = map(int, input().split())
    # Сохраните последнее показание этого датчика

for sensor, temperature in sorted(last.items()):
    print(sensor, temperature)
Входные данные

Первая строка содержит число записей N (1 ≤ N ≤ 100 000). В следующих N строках записаны два целых числа через пробел: номер датчика от 1 до 109 и температура от −100 до 100 включительно.

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

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

В справочнике хранятся коды товаров и их цены. Программа получает запросы о цене, но некоторые товары могут отсутствовать в справочнике.

Для каждого запроса выведите цену известного товара или слово НЕТ, если указанного кода нет. Цена 0 допустима и означает, что товар бесплатный.

Скопируйте подготовленный код и допишите обработку запроса внутри последнего цикла.

n = int(input())
prices = {}
for _ in range(n):
    product, price = input().split()
    prices[product] = int(price)

m = int(input())
for _ in range(m):
    product = input()
    # Выведите цену известного товара или слово НЕТ
Входные данные

Первая строка содержит целое число N — количество товаров (1 ≤ N ≤ 10 000). Следующие N строк содержат код товара и целую цену через пробел. Коды различны.

Код — строка длиной от 1 до 20 символов, состоящая из латинских букв и цифр. Регистр букв имеет значение; ведущие нули являются частью кода. Цена находится в диапазоне от 0 до 109 рублей включительно.

Затем вводится целое число M — количество запросов (1 ≤ M ≤ 10 000). В каждой из следующих M строк находится один код товара.

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

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

Для каждого запроса выведите в отдельной строке цену либо слово НЕТ прописными русскими буквами. Ответы должны идти в порядке запросов.

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

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

n = int(input())
prices = {}
for _ in range(n):
    product, price = input().split()
    price = int(price)
    # Добавьте товар и его цену в словарь

m = int(input())
for _ in range(m):
    product = input()
    print(prices[product])
Входные данные

Первая строка содержит целое число N — количество товаров (1 ≤ N ≤ 10 000). Следующие N строк содержат код товара и целую цену через пробел. Коды различны.

Код — строка длиной от 1 до 20 символов, состоящая из латинских букв и цифр. Регистр букв имеет значение; ведущие нули являются частью кода. Цена находится в диапазоне от 0 до 109 рублей включительно.

Затем вводится целое число M — количество запросов (1 ≤ M ≤ 10 000). В каждой из следующих M строк находится один код товара.

Гарантируется, что каждый запрашиваемый код присутствует среди первых N записей.

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

Для каждого запроса выведите цену товара в отдельной строке. Сохраните порядок запросов, включая повторные.

В магазине каждому коду товара соответствует цена в рублях. Все коды и цены уже записаны в словаре подготовленной программы.

Программа получает код одного товара. Допишите вывод цены этого товара. Скопируйте подготовленный код и замените комментарий своей строкой.

prices = {
    'pen': 35,
    'pencil': 20,
    'notebook': 70,
    'ruler': 45,
    'eraser': 20,
    'marker': 90,
    'folder': 120,
    'paper': 350
}

product = input()
# Допишите вывод цены товара
Входные данные

Одна строка содержит один из кодов, перечисленных в словаре. Код записан строчными латинскими буквами. Гарантируется, что он присутствует в словаре.

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

Выведите одно целое число — цену указанного товара в рублях. Другой текст выводить не нужно.

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

\[\frac{\Delta F}{F} = \left(\frac{R_p}{R_\star}\right)^{2} \qquad\Longrightarrow\qquad R_p = R_\star\sqrt{\frac{\Delta F}{F}}\]

Радиус звезды \(R_\star\) задан в радиусах Солнца, где \(R_\odot = 6{,}957 \cdot 10^{8}\) м. Вычислить радиус планеты в радиусах Юпитера, где \(R_{\mathrm{J}} = 7{,}1492 \cdot 10^{7}\) м.

Проверьте порядок величины: для глубины около одного процента и звезды солнечного радиуса должна получиться планета размером примерно с Юпитер.

Ввод. Два вещественных числа, каждое на своей строке: \(R_\star\) в радиусах Солнца и глубина транзита \(\Delta F/F\), где \(0 \lt R_\star \le 1000\) и \(0 \lt \Delta F/F \le 1\).

Вывод. Радиус планеты в радиусах Юпитера с шестью знаками после запятой.

Формат вывода. Ответ выводится ровно с шестью знаками после запятой, например print(f"{x:.6f}"). Функция round для вывода не годится: она отбрасывает незначащие нули, и 2.00709 не совпадёт с 2.007090.

Видимая звёздная величина \(m\) и абсолютная звёздная величина \(M\) связаны с расстоянием до звезды соотношением

\[m - M = 5\lg d - 5\]

где \(d\) выражено в парсеках. Отсюда

\[d = 10^{\,(m - M + 5)/5}\]

Вычислить расстояние до звезды в парсеках.

Здесь возведение в степень с дробным показателем: в Python это оператор **. Проверьте себя определением абсолютной звёздной величины: если \(m = M\), расстояние равно ровно 10 парсекам.

Ввод. Два вещественных числа, каждое на своей строке: \(m\) и \(M\), где \(-30 \le m \le 30\) и \(-30 \le M \le 30\).

Вывод. Расстояние в парсеках с шестью знаками после запятой.

Формат вывода. Ответ выводится ровно с шестью знаками после запятой, например print(f"{x:.6f}"). Функция round для вывода не годится: она отбрасывает незначащие нули, и 2.00709 не совпадёт с 2.007090.

Тело обращается вокруг центрального тела массой \(M\) по орбите с большой полуосью \(a\). Период обращения

\[T = 2\pi\sqrt{\frac{a^{3}}{GM}}\]

где \(G = 6{,}67430 \cdot 10^{-11}\) м³·кг⁻¹·с⁻².

Вычислить период обращения в сутках (1 сутки = 86400 с).

Проверьте себя: для орбиты Земли, где \(a = 1{,}496 \cdot 10^{11}\) м и \(M = 1{,}989 \cdot 10^{30}\) кг, должно получиться около 365 суток.

Ввод. Два вещественных числа, каждое на своей строке: \(a\) в метрах и \(M\) в килограммах.

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

Формат вывода. Ответ выводится ровно с шестью знаками после запятой, например print(f"{x:.6f}"). Функция round для вывода не годится: она отбрасывает незначащие нули, и 2.00709 не совпадёт с 2.007090.

Тело брошено с поверхности земли со скоростью \(v\) под углом \(\alpha\) к горизонту. Сопротивление воздуха не учитывается. Дальность полёта

\[L = \frac{v^{2}\,\sin 2\alpha}{g}\]

Вычислить дальность.

Угол задан в градусах, а тригонометрические функции принимают радианы: переведите угол функцией math.radians. Учтите, что \(\sin 2\alpha \ne 2\sin\alpha\).

Проверьте себя предельными случаями: при \(\alpha = 0\) и при \(\alpha = 90^\circ\) дальность обращается в ноль, а максимум достигается при \(\alpha = 45^\circ\).

Ввод. Три вещественных числа, каждое на своей строке: \(v\) в м/с, \(\alpha\) в градусах и \(g\) в м/с², где \(0 \le v \le 10^4\), \(0 \le \alpha \le 90\), \(0 \lt g \le 100\).

Вывод. Дальность полёта в метрах с шестью знаками после запятой.

Формат вывода. Ответ выводится ровно с шестью знаками после запятой, например print(f"{x:.6f}"). Функция round для вывода не годится: она отбрасывает незначащие нули, и 2.00709 не совпадёт с 2.007090.

Три резистора соединены параллельно. Их общее сопротивление находится из

\[\frac{1}{R} = \frac{1}{R_1} + \frac{1}{R_2} + \frac{1}{R_3}\]

Вычислить \(R\).

Ввод. Три вещественных числа, каждое на своей строке: \(R_1\), \(R_2\), \(R_3\) в омах, где \(0 \lt R_i \le 10^6\).

Вывод. Общее сопротивление в омах с шестью знаками после запятой.

Формат вывода. Ответ выводится ровно с шестью знаками после запятой, например print(f"{x:.6f}"). Функция round для вывода не годится: она отбрасывает незначащие нули, и 2.00709 не совпадёт с 2.007090.

Период малых колебаний математического маятника длиной \(L\) при ускорении свободного падения \(g\) равен

\[T = 2\pi\sqrt{\frac{L}{g}}\]

Вычислить период.

 

Ввод. Два вещественных числа, каждое на своей строке: \(L\) в метрах и \(g\) в м/с², где \(0 \lt L \le 10^6\), \(0 \lt g \le 100\).

Вывод. Период в секундах с шестью знаками после запятой.

Формат вывода. Ответ выводится ровно с шестью знаками после запятой, например print(f"{x:.6f}"). Функция round для вывода не годится: она отбрасывает незначащие нули, и 2.00709 не совпадёт с 2.007090.

Палитра изображения содержит \(N\) различных оттенков. Определить наименьшее целое число бит, которого достаточно для кодирования номера оттенка, то есть наименьшее \(i\), при котором

\[2^i \ge N\]

Напрашивается решение math.ceil(math.log2(N)). Оно работает не всегда: логарифм вычисляется приближённо, и на больших \(N\) результат может отличаться от истинного на единицу. Проверьте своё решение на \(N = 2^{50}\) и \(N = 2^{50} + 1\).

Точный ответ даёт (N - 1).bit_length(): метод возвращает число значащих двоичных разрядов, а у числа \(N - 1\) их ровно столько, сколько бит нужно для \(N\) значений.

Ввод. Одно целое число \(N\), где \(1 \le N \le 10^{18}\).

Вывод. Одно целое число — количество бит.

Производится звукозапись с частотой дискретизации f Гц и глубиной кодирования b бит на отсчёт. Запись ведётся по c каналам. Определить, сколько целых секунд записи поместится в память объёмом V байт.

Чтобы не терять точность, переведите объём памяти в биты.

Ввод. Четыре целых числа, каждое на своей строке: \(f\), \(b\), \(c\) и \(V\), где \(1 \le f \le 10^6\), \(1 \le b \le 64\), \(1 \le c \le 8\), \(1 \le V \le 10^{15}\).

Вывод. Одно целое число — количество целых секунд.

Поделиться
Класснуть