Напомена: ово је незванична копија задатака. Као таква, не гарантује се да ће овај сајт бити одржаван, и немојте се изненадити ако са њега задаци одједном нестану.
У недавној посети храму у Луксору наишли сте на интересантну, древну загонетку. Наиме, староегипатски мудраци су волели да множе и да рачунају XOR-вредност парова природних бројева. Наишли сте на таблу на којој је исписано \(T\) парова ненегативних целих бројева \(A_i, B_i\). Интересантно је да је код свих ових парова број \(A_i\) непаран. Ваш задатак је да за сваки од тих парова пронађете два природна броја \(X_i, Y_i\) таква да важи \(A_i = X_iY_i\) и \(B_i = X_i \text{ xor } Y_i\). Могуће је да такав пар не постоји, уколико је то случај, испишите \(-1\).
У првој линији стандардног улаза налази се природан број \(T\). У наредних \(T\) линија налазе се по два ненегативна цела броја одвојена размаком, \(A_i\) и \(B_i\).
У \(T\) редова, по један за сваки упит, исписати тражени пар \(X_i, Y_i\), одвојен размаком. Уколико такав пар не постоји, исписати \(-1\). Уколико има више решења, исписати било које.
4
21 4
2795079079011879151 119681854
9 0
9 2
3 7
1679133257 1664596343
3 3
-1
Тест примери су подељени у 3 дисјунктне групе:
Оператор XOR, односно ексклузивну дисјункцију у C++ записујемо помоћу
симбола ^
. Ова операција \(x\
\text{xor} \ y\) се за ненегативне целе бројеве \(x,y\) дефинише на следећи начин. Прво се
бројеви запишу у бинарном запису. Уколико један број има мање цифара од
другог, дописују му се водеће нуле све док не буду имали исти број
бинарних цифара. Тако се добијају два низа бинарних цифара, означимо их
са \(a_1, \ldots, a_k\) и \(b_1, \ldots b_k\). Затим се за сваку
позицију \(i \in \{1, \ldots, k \}\)
рачуна \(c_i\) помоћу следећих
правила:
Низ бинарних цифара \(c_1, \ldots, c_k\) (који можда има водеће нуле) је бинарни запис резултата, односно броја \(x \ \text{xor} \ y\).