Код на питоне для решения 5 задачи из Егэ

 count = 0
 for x in range(1_000_000_000, 1_789_456_123+1):
    if x%16 in [10,15] or x%8 in [0,3]:
        count += 1
print(count)

Можете пожалуйста объяснить как работает этот код, для этой задачи: введите сюда описание изображения


Ответы (1 шт):

Автор решения: MBo

Рассмотрите двоичные остатки от деления на 4, это 00,01,10,11

Посмотрите, какие двоичные окончания чисел получатся при применении данного алгоритма к этим остаткам.

Приведённый код проверяет три и четыре последних бита каждого числа из диапазона - соответствуют ли они этим окончаниям. На этом этапе учёбы вы уже должны знать, что x%16 выделяет 4 последних бита числа. Если это непонятно, то сушите вёсла...

Алгоритм рабочий, но неэффективный, т.к. проверяет миллиард чисел. Вместо этого нужно просто посчитать математически количество чисел с нужными окончаниями в данном интервале.

→ Ссылка