Veider funktsioon

아직 제출이 없습니다시간 제한0.1초메모리 제한1024 MB

문제

On antud positiivne täisarv $a$. Vaja on valida täisarv $b$ ($1 \le b \le a - 1$) nii, et arvude $a \oplus b$ ja $a \otimes b$ suurim ühistegur oleks maksimaalne võimalik, ja väljastada see ühistegur. Teisisõnu on vaja leida funktsiooni $$f(a) = \max_{0<b<a} \gcd(a \oplus b, a \otimes b)$$ väärtus $f(A)$, kus $\oplus$ tähistab tehet "bitikaupa välistav VÕI" ja $\otimes$ tehet "bitikaupa JA". Nende tehete väärtused ühebitistel arvudel on:

$a$$b$$a \oplus b$$a \otimes b$
0000
0110
1010
1101

Pikematele arvudele rakendatakse neid tehteid nii, et vaadeldakse operandide kahendesitusi, sooritatakse tehted nende vastavate bittide vahel ja saadud tulemused moodustavad vastuse kahendesituse. Mõned näited:

Tehe 10-süsteemisTehe 2-süsteemisTulemus 2-süsteemisTulemus 10-süsteemis
$5 \oplus 3$$101 \oplus 11$$110$$6$
$5 \otimes 3$$101 \otimes 11$$1$$1$
$7 \oplus 42$$111 \oplus 101010$$101101$$45$
$7 \otimes 42$$111 \otimes 101010$$10$$2$

입력

Faili esimesel real on päringute arv $N$ ($1 \le N \le 1\,000$) ja järgmisel $N$ real igaühel üks täisarv $A_i$ ($2 \le A_i < 2^{25}$).

출력

Faili väljastada $N$ rida. Faili reale number $i$ väljastada $f(A_i)$ väärtus.