Напомена: ово је незванична копија задатака. Као таква, не гарантује се да ће овај сајт бити одржаван, и немојте се изненадити ако са њега задаци одједном нестану.
Legutóbbi látogatásotok folyamán egy luxori templomban felfedeztetek egy érdekes ősi rejtvényt. Az ókori Egyiptom bölcsei nagyon kedveltek szorozni és számolni a természetes számok alkotta számpárok XOR értékét. Találtatok egy táblát, amelyen \(T\) számú nemnegatív \(A_i, B_i\) egész számok alkotta számpár állt. Érdekes, hogy minden számpár esetében az \(A_i\) szám páratlan. Feladatotok az, hogy minden adott számpárra találjatok két ( \(X_i, Y_i\) ) egész számot úgy, hogy érvényes legyen: \(A_i = X_iY_i\) és \(B_i = X_i \text{ xor } Y_i\). Megtörténhet, hogy ilyen számpár nem létezik. Ebben az esteben írjátok ki, hogy \(-1\).
A szabványos bemenet első sorában a \(T\) természetes szám áll. A következő \(T\) sorban egyenként két nemnegatív egész szám \(A_i\) és \(B_i\) áll szóközzel elválasztva.
\(T\) sorban, mindegyik bemenetre, kiíratni a \(X_i, Y_i\) számpárt szóközzel elválasztva. Ha nincs ilyen számpár, kiíratni \(-1\)-et. Ha több megoldás is van, kiíratni bármelyiket.
4
21 4
2795079079011879151 119681854
9 0
9 2
3 7
1679133257 1664596343
3 3
-1
A tesztpéldák 3 független csoportba oszthatók:
Az XOR operátor, vagyis a kizáró vagy szimbóluma a C++
programnyelvben a ^
. Az \(x\
\text{xor} \ y\) művelet eredményét a nemnegatív \(x,y\) egész számokra a következő módon
képezzük: először is a számokat leírjuk bináris alakban. Ha valamelyik
szám rövidebb a másiknál, ahhoz annyi vezető nullát írunk, hogy a számok
egyenlő hosszúságúak legyenek. Így két bináris számsort kapunk: \(a_1, \ldots, a_k\) és \(b_1, \ldots b_k\). Ezután minden \(i \in \{1, \ldots, k \}\) értékre
kiszámítjuk a \(c_i\) értéket a
következő szabályok szerint:
A \(c_1, \ldots, c_k\) bináris számsor (amely tartalmazhat vezető nullákat) az eredmény, vagyis az \(x \ \text{xor} \ y\) szám bináris alakja.