Luxor
View as PDFU nedavnoj poseti hramu u Luksoru naišli ste na interesantnu, drevnu zagonetku. Naime, staroegipatski mudraci su voleli da množe i da računaju XOR-vrednost parova prirodnih brojeva. Naišli ste na tablu na kojoj je ispisano parova nenegativnih celih brojeva
. Interesantno je da je kod svih ovih parova broj
neparan. Vaš zadatak je da za svaki od tih parova pronađete dva prirodna broja
takva da važi
i
. Moguće je da takav par ne postoji, ukoliko je to slučaj, ispišite
.
Opis ulaza
U prvoj liniji standardnog ulaza nalazi se prirodan broj . U narednih
linija nalaze se po dva nenegativna cela broja odvojena razmakom,
i
.
Opis izlaza
U redova, po jedan za svaki upit, ispisati traženi par
, odvojen razmakom. Ukoliko takav par ne postoji, ispisati
. Ukoliko ima više rešenja, ispisati bilo koje.
Primer 1
Ulaz
4
21 4
2795079079011879151 119681854
9 0
9 2
Izlaz
3 7
1679133257 1664596343
3 3
-1
Ograničenja
je neparan.
Test primeri su podeljeni u 3 disjunktne grupe:
- U test primerima vrednim 20 poena:
i
.
- U test primerima vrednim 20 poena:
.
- U test primerima vrednim 60 poena: Bez dodatnih ograničenja.
Napomena
Operator XOR, odnosno ekskluzivnu disjunkciju u C++ zapisujemo pomoću simbola ^. Ova operacija se za nenegativne cele brojeve
definiše na sledeći način. Prvo se brojevi zapišu u binarnom zapisu. Ukoliko jedan broj ima manje cifara od drugog, dopisuju mu se vodeće nule sve dok ne budu imali isti broj binarnih cifara. Tako se dobijaju dva niza binarnih cifara, označimo ih sa
i
. Zatim se za svaku poziciju
računa
pomoću sledećih pravila:
- Za
važi
- Za
važi
- Za
važi
- Za
važi
Niz binarnih cifara (koji možda ima vodeće nule) je binarni zapis rezultata, odnosno broja
.
Comments