ile_eli: (Default)
[personal profile] ile_eli
Дочка загадала загадку:
имеется массив длины n с целыми числами от 1 до n-1. Разумеется, хотя бы одно число появляется дважды (а может, вообще все одинаковые - это уж как повезет). Нужно найти хотя бы одно повторяющееся число за время порядка n, используя память порядка 1.
Решение (некрасивое и нечестное): суммируем 2^A(i). На каждом шаге перед тем, как возвести 2 в степень следующего числа и прибавить к результату, смотрим, какой остаток суммы при делении на 2^(A(i)+1). Если он больше или равен 2^A(i), значит оно уже было.
Жульничество в том, что вместо того чтоб добавлять ячейки памяти, мы одну раздуваем сколько вздумается.

А морали никакой, никакой, никакой, (с)

Profile

ile_eli: (Default)
ile_eli

March 2026

S M T W T F S
1234 567
891011121314
15161718192021
22232425262728
293031    

Style Credit

Expand Cut Tags

No cut tags
Page generated Mar. 9th, 2026 09:12 pm
Powered by Dreamwidth Studios