Ctrl K

Кусочки с заданной пропорцией нулей и единиц

Средняя
Дана двоичная строка bits и два натуральных числа zeros_part и ones_part. Непустой непрерывный кусок строки подходит, если количество нулей и количество единиц в нём относятся как zeros_part : ones_part, то есть нули · ones_part == единицы · zeros_part. Например, при пропорции 2 : 3 подходят «00111» и «0110011110», а «11100» — нет. Посчитайте подходящие куски. Одинаковые по содержанию куски на разных позициях считаются разными.
Пример 1
bits='1001', zeros_part=1, ones_part=1 → 3

Поровну нулей и единиц в «10» (начало), «01» (конец) и во всей строке «1001» — всего 3.

Пример 2
bits='0010', zeros_part=2, ones_part=1 → 2

Два нуля на одну единицу: «001» и «010».

Пример 3
bits='111', zeros_part=1, ones_part=3 → 0

Нулей нет, а соотношение требует хотя бы одного нуля — ответ 0.

Ограничения
  • 1 ≤ len(bits) ≤ 10⁵
  • bits состоит только из 0 и 1
  • 1 ≤ zeros_part, ones_part ≤ len(bits)
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиКуски с одинаковыми краями СредняяКуски поровну из гласных и согласных СредняяСбалансированные отрезки строки СложнаяЧисло римскими цифрами СредняяЗапись дроби десятичной Средняя
загружаем Python…
Вход
bits='1001', zeros_part=1, ones_part=1
Ожидается
3

«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 100 тестов на сервере, включая скрытые.