Алгоритмы и структуры данных
8.48K subscribers
282 photos
8 links
По всем вопросам: @altmainf

Уважаемый менеджер: @altaiface
Download Telegram
Вычисление деления по модулю для числа вида (1 << s) - 1 без оператора деления

Для деления по модулю числа на значение, равное одной меньше степени двойки (например, 1, 3, 7, 15 и т.д.), можно использовать метод, который не требует оператора деления. Вместо этого используется серия побитовых операций и циклов.

Пример использования:
Если n = 29 и s = 3:
- Делитель d = 7.
- В цикле вычисляются промежуточные значения m, пока n не станет меньше или равно d.
- Результат m = 29 % 7 = 1.
👨‍💻Задачи точного покрытия — фундамент для многих алгоритмических подходов. Но пока теория лежит на полке, она мало что меняет в вашем инженерном мышлении

На открытом уроке мы разберем Dancing Links через практику: соберем пентамино на столе, представим фигуры в виде строк матрицы и разберемся, как работает поиск с возвратом. Когда алгоритм становится наглядным, вы начинаете понимать, что на самом деле происходит внутри.

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

📆 Встречаемся 22 декабря в 20:00 МСК в преддверие старта курса «Алгоритмы и структуры данных», регистрация открыта: https://otus.pw/eq4Y/?erid=2VtzqvhDroC

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Подсчет количества замыкающих нулевых битов справа с использованием деления по модулю и таблицы поиска

Этот метод позволяет быстро найти количество замыкающих нулевых битов в 32-битном числе, используя деление по модулю и таблицу поиска. Метод основан на уникальном соответствии значений остатка от деления на 37 позициям битов.

Преимущества метода
- Эффективность: Метод требует всего 4 операции, что делает его быстрым.
- Компактность: Использование небольшой таблицы позволяет значительно ускорить вычисления по сравнению с линейным методом.

Недостатки метода
- Ограниченность: Метод предназначен для 32-битных чисел и требует адаптации для чисел другой разрядности.
Произведения всех элементов массива, кроме текущего

Проблема:
Дан целочисленный массив nums. Необходимо реализовать алгоритм, который вернет массив, где i-ый элемент является произведением всех элементов nums, кроме nums[i] (каждое произведение гарантированно умещается в 32-битное целое число).

Для решения задачи без использования операции деления и за O(n) времени, можно использовать метод предварительного вычисления произведений. Идея заключается в том, чтобы использовать два прохода по массиву: один для вычисления произведений слева от текущего элемента и другой для вычисления произведений справа от текущего элемента.

Пример:
Input: nums = [-1,0,1,2,3]
Output:
[0,-6,0,0,0]