Проблема "AND"#12233

Проблема "AND" (Розбір)

listings

Автор задачі:

Imran AKKI

Підготовлено:

Imran AKKI

Редакція:

Hasan Saleh (MathModel)

Розв'язок Ми знаємо факт, що для будь-яких x,y \ge 0 виконується x \& y \le \min(x,y), бо в кращому випадку вони ділять усі біти.

Ми хочемо показати, що послідовне виконання операції є оптимальним, бо щоразу відповідь або залишатиметься тією ж, або зменшуватиметься через визначення AND, тобто відповідь:

x=a_1 \& a_2 \& a_3 \& ... \& a_n

Симулюємо процес для n=3

[a_1,a_2,..,a_n] \rightarrow [a_1\&a_2,a_1\&a_2,a_3] \rightarrow [a_1\&a_2\&a_3,a_1\&a_2,a_1\&a_2\&a_3] \rightarrow [x,x,x]

Очевидно, що ми не можемо виконати більше операцій над масивом , і це мінімально можливе значення, тому оптимальна відповідь: [\underbrace{x,x,...,x}_{n\text{ разів}}], що еквівалентно нескінченному виконанню операції.

for _ in range(int(input())):
    n=int(input())
    a=list(map(int,input().split()))
    A=a[0]
    for i in a:
        A&=i
    print(A)

Складність .