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

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

При регистрации в информационной системе каждому пользователю выдаётся имя длиной ровно N символов. Имя составляется из алфавита мощностью M символов. Для хранения имени отводится одинаковое для всех пользователей целое число байт, при этом используется посимвольное кодирование, а на каждый символ отводится одинаковое целое число бит. Дополнительно на каждого пользователя хранится K байт служебных сведений.

Определить объём памяти, необходимый для хранения сведений о P пользователях.

Округлять вверх придётся дважды и на разных уровнях: сначала — число бит на один символ, затем — число байт на одно имя. Типичная ошибка состоит в том, чтобы округлить итоговый объём вместо объёма одной записи; проверьте себя на примере.

Число бит на символ — наименьшее \(i\), при котором \(2^i \ge M\). Его можно получить без цикла: (M - 1).bit_length().

Ввод. Четыре целых числа, каждое на своей строке: \(N\), \(M\), \(K\) и \(P\), где \(1 \le N \le 1000\), \(1 \le M \le 10^6\), \(0 \le K \le 1000\), \(1 \le P \le 10^6\).

Вывод. Одно целое число — объём памяти в байтах.

Числовая ось разбита на ячейки шагом \(h\), начиная от нуля: ячейка с номером \(k\) занимает промежуток \(\bigl[\,k h,\ (k+1)h\,\bigr)\). Для координаты \(x\) определить номер ячейки, в которую она попадает, — двумя способами: как x // h и как int(x / h).

Координата может быть отрицательной. Найдите такие x, при которых два способа дают разные ответы, и объясните, какой из них верен.

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

Ввод. Два целых числа, каждое на своей строке: \(x\) и \(h\), где \(-10^6 \le x \le 10^6\), \(1 \le h \le 10^6\).

Вывод. Два целых числа через пробел: результат x // h и результат int(x / h).

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

Полуволна равна \(\lambda/2\), поэтому число полуволн равно

\[\frac{L}{\lambda/2} = \frac{2L}{\lambda}\]

 

Ввод. Два целых числа, каждое на своей строке: \(L\) и \(\lambda\), где \(1 \le L \le 10^{16}\), \(1 \le \lambda \le 10^9\).

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

Аккумулятор ёмкостью Q мА·ч питает прибор, потребляющий постоянный ток I мА.

Ответить на два вопроса:

1. Сколько целых часов проработает прибор от одного полностью заряженного аккумулятора? 2. Сколько аккумуляторов потребуется, чтобы прибор проработал непрерывно T часов?

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

Ввод. Три целых числа, каждое на своей строке: \(Q\), \(I\) и \(T\), где \(1 \le Q \le 10^9\), \(1 \le I \le 10^9\), \(1 \le T \le 10^9\).

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

Маятник совершает одно полное колебание за T миллисекунд. Наблюдение длилось t миллисекунд, причём в начальный момент маятник только начинал колебание.

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

Ввод. В первой строке — целое \(T\), где \(1 \le T \le 10^6\). Во второй — целое \(t\), где \(0 \le t \le 10^{12}\).

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

Дано трёхзначное натуральное число. Требуется вывести его разряды по отдельности, а затем сумму разрядов.

Задача отрабатывает связку операций // и %: деление на десять сдвигает число на разряд вправо, остаток от деления на десять снимает младшую цифру.

Ввод. Одно целое число \(n\), где \(100 \le n \le 999\).

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

Многие старейшие шифры основаны на замене букв на числа, например, в шифре A1Z26 каждая буква заменяется на её порядковый номер в алфавите. Вдохновившись этой идеей, первоклассник Петя решил придумать свой шифр-замену. Он хочет каждую букву от <<A>> до <<R>> (первые \(18\) букв латинского алфавита) заменять на одно из чисел \(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 20, 30, 40, 50, 60, 70, 80, 90\). Числа выбраны так, чтобы при дешифровке легко разделить последовательность цифр на коды букв, причём весь алфавит Петя не смог использовать, ибо сотни он ещё не узнал.

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

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

Программа получает на вход непустую строку \(s\), состоящую из прописных букв латинского алфавита от <<A>> до <<R>>, длина строки не превышает 1000 символов.

Программа должна вывести одно число — шифр строки \(s\). Обратите внимание, число может быть длинным.

Решения, правильно работающие, когда строка состоит не более чем из \(4\) символов, будут оцениваться в \(20\) баллов.

Решения, правильно работающие, когда строка состоит из букв <<A>> и <<B>>, будут оцениваться в \(20\) баллов.

Решения, правильно работающие, когда строка состоит из букв от <<A>> до <<I>>, будут оцениваться в \(44\) балла.

Даны два прямоугольника размера \(a\times b\) и \(c\times d\). Можно соединить их вместе, приложив сторону одного прямоугольника к стороне другого и склеив место соединения. Прямоугольники можно поворачивать перед склеиванием. После этого из полученной фигуры нужно вырезать квадрат со сторонами, параллельными сторонам прямоугольника. Определите максимальное возможное значение стороны квадрата.

На рисунке изображены два прямоугольника со сторонами \(8\times 3\) и \(6\times 2\), из которых можно вырезать квадрат со стороной 5 (заштрихован).

image

Программа получает на вход натуральные числа \(a\), \(b\), \(c\), \(d\), каждое в отдельной строке — стороны первого и второго прямоугольников. Все числа не превосходят \(10^9\).

Программа должна вывести одно целое число — максимальную возможную сторону квадрата.

СЕКРЕТНО
Дело VOIDLINKER · Эпизод 12 из 13
Транзакция-маркер
ИСТОЧНИК: лог финансовой системы CYBERONE-FIN
ИЗ ПЕРЕХВАЧЕННОЙ ПЕРЕПИСКИ:
«Когда я отмываю украденные средства, ID транзакций подчиняется правилу: все цифры в десятичной записи различны — никаких повторов. Найди мой самый крупный ID — это самая большая отмытая сумма. — V.»
ФОРМАЛЬНАЯ ЗАДАЧА

Определите максимальное число, в десятичной записи которого все цифры различны. Под числом понимается максимальная последовательность цифр, ограниченная нецифровыми символами или границами строки. Числа с ведущими нулями (кроме 0) не рассматриваются. Если подходящих нет — выведите 0.

ВХОДНЫЕ ДАННЫЕ

Одна строка из заглавных букв и цифр, до 105 символов.

ВЫХОДНЫЕ ДАННЫЕ

Само найденное число.

СЕКРЕТНО
Дело VOIDLINKER · Эпизод 10 из 13
Стеганограф
ИСТОЧНИК: лог сервера, проанализированный forensic-командой
ИЗ ПЕРЕХВАЧЕННОЙ ПЕРЕПИСКИ:
«Думаете, видите случайный мусор в логе? Я прячу там сообщения. Скрытый блок: чётная цифра — повторяющаяся буква — та же чётная цифра. Внутри только эта буква, никаких других символов. Найдите самый длинный такой блок. — V.»
ФОРМАЛЬНАЯ ЗАДАЧА

Определите последовательность из максимального количества идущих подряд одинаковых букв, начинающуюся и заканчивающуюся одной и той же чётной цифрой (0,2,4,6,8), не содержащую внутри других цифр и других букв, кроме повторяющейся. Длина считается вместе с обрамляющими цифрами. Если ничего нет — выведите 0.

ВХОДНЫЕ ДАННЫЕ

Одна строка из заглавных букв и цифр, до 2·105 символов.

ВЫХОДНЫЕ ДАННЫЕ

Одно целое число.

СЕКРЕТНО
Дело VOIDLINKER · Эпизод 9 из 13
Маяк PQRS
ИСТОЧНИК: радиоэфир 433 МГц / 31.10.2026 16:24
ИЗ ПЕРЕХВАЧЕННОЙ ПЕРЕПИСКИ:
«Слышишь треск на 433-й? Это мой маяк. Циклический сигнал: PQRSPQRSPQRS… Каждый символ — следующий в цикле P→Q→R→S→P… Сигнал может начаться и оборваться в любой точке цикла, но содержит хотя бы одну полную группу PQRS. Найди мой самый длинный отрезок маяка. — V.»
ФОРМАЛЬНАЯ ЗАДАЧА

Текстовый файл состоит из символов P, Q, R, S. Определите максимальную длину непрерывной подпоследовательности, в которой каждый символ — следующий в цикле P→Q→R→S→P, и содержится не менее одной полной группы PQRS. Если нет — выведите 0.

ВХОДНЫЕ ДАННЫЕ

Одна строка до 2·105 символов.

ВЫХОДНЫЕ ДАННЫЕ

Одно целое число.

На странице есть:

<ul id="list"></ul>

JavaScript выполняет:

const ul = document.getElementById('list');
ul.innerHTML = '';
const li = document.createElement('li');
li.textContent = 'Бег';
ul.appendChild(li);

Что увидит пользователь?

  1. Пустой список
  2. Список с одним пунктом «Бег»
  3. Ошибку в консоли
  4. Текст «Бег» без маркера списка

Что произойдёт при выполнении этого кода?

fetch('/api/add', {
  method: 'POST',
  headers: {'Content-Type': 'application/json'},
  body: JSON.stringify({name: 'Бег'})
})
.then(r => r.json())
.then(data => alert(data.msg));
  1. Откроется новая страница /api/add
  2. Страница перезагрузится с новой привычкой
  3. JavaScript отправит POST с JSON на сервер, получит ответ и покажет alert
  4. Привычка добавится, но ничего не произойдёт на экране

Пользователь нажал кнопку «Добавить» в HTML-форме:

<form method="POST" action="/add">
  <input name="habit_name" value="Йога">
  <button type="submit">Добавить</button>
</form>

Как Flask получит значение «Йога» в обработчике?

  1. request.json['habit_name']
  2. request.form['habit_name']
  3. request.args['habit_name']
  4. request.get('habit_name')

Ёлочная гирлянда состоит из n лампочек, пронумерованных от 1 до n. Каждая лампочка либо горит (обозначим «1»), либо не горит («0»). Текущее состояние гирлянды задано строкой a.

Монтажник Егор хочет, чтобы гирлянда выглядела по-праздничному — в виде строки b (тоже из нулей и единиц, той же длины n). Менять строку b нельзя — это «образец».

С гирляндой a Егор может выполнять две операции:

  • Переключить одну лампочку. Выбрать позицию i (1 ≤ i ≤ n) и поменять её состояние (0 → 1 или 1 → 0). Стоимость такой операции — 1 рубль.
  • Поменять местами две лампочки. Выбрать две позиции i и j (1 ≤ i, j ≤ n) и поменять состояния этих лампочек местами. Стоимость такой операции — |i - j| рублей, то есть расстояние между позициями.

Помогите Егору найти минимальную суммарную стоимость, с которой можно превратить гирлянду a в гирлянду b.
 

Формат входных данных

В первой строке — целое число n (1 ≤ n ≤ 106) — количество лампочек в гирлянде.

Во второй строке — строка a длины n, состоящая только из символов «0» и «1», — текущее состояние гирлянды.

В третьей строке — строка b длины n, состоящая только из символов «0» и «1», — желаемое состояние гирлянды.
 

Формат выходных данных

Одно целое число — минимальная суммарная стоимость, которую нужно заплатить, чтобы превратить a в b.

Вам на вход подаётся JSON-ответ от API погоды с разделами current (текущая температура) и hourly (почасовой прогноз на 24 часа).

Составьте сводку погоды за сутки.

Формат входных данных

Одна строка — JSON-объект с разделами current и hourly.

Формат выходных данных

Ровно 6 строк:

=== ПОГОДА НА СУТКИ ===
Сейчас: T°C
Максимум: X°C
Минимум: Y°C
Средняя: A°C
Размах: R°C

где T — текущая температура из current, X/Y/A — максимум, минимум и среднее по массиву hourly (среднее округлить до 1 знака), R — разница между максимумом и минимумом.

Вам на вход подаётся JSON-ответ от API погоды с почасовым прогнозом и пороговое значение температуры.

Выведите все часы, когда температура больше или равна порогу. Каждый час — на отдельной строке.

В разделе hourly время хранится как "2026-04-16T15:00". Возьмите только часть после T (получится 15:00).

Если таких часов нет, выведите Нет данных.

Формат входных данных

Первая строка — JSON-объект с разделом hourly.
Вторая строка — целое число (порог).

Формат выходных данных

По одной строке на каждый подходящий час:

HH:00 — X°C

Или Нет данных, если ни один час не подошёл.

Вам на вход подаётся JSON-ответ от API погоды с почасовым прогнозом (раздел hourly, массив temperature_2m из 24 значений).

Посчитайте среднюю температуру за сутки, округлите до одного знака после запятой.

Формат входных данных

Одна строка — JSON-объект с разделом hourly.

Формат выходных данных

Одна строка:

Средняя: X°C

где X — число с одним знаком после запятой.

Вам на вход подаётся JSON-ответ от API погоды с почасовым прогнозом (раздел hourly, массив temperature_2m из 24 значений).

Найдите максимальную и минимальную температуру за сутки.

Формат входных данных

Одна строка — JSON-объект с разделом hourly.

Формат выходных данных

Две строки:

Максимум: X°C
Минимум: Y°C
Поделиться
Класснуть