Размена групе битова
Vreme | Memorija | Ulaz m | Izlaz m |
---|---|---|---|
1 s | 64 Mb | Standardni izlaz | Standardni ulaz |
Написати програм који за дате бројеве \(a\), \(b\), \(p\), \(n\), размењује \(n\) узастопних битова између бројева \(a\) и \(b\), почевши од позиције \(p\) (бројећи позиције од 1 слева).
Улаз
У првој линији стандардног улаза се налази ненегативан цео број \(a\), мањи од \(2^{64}\). У другој линији стандардног улаза се налази ненегативан цео број \(b\), мањи од \(2^{64}\). У трећој линији је цео број \(p\), такав да \(1 \leq p \leq 64\). У четвртој линији је природан број \(n\), такав да \(p + n \leq 65\).
Излаз
у првој линији стандардног излаза исписати ненегативан цео број, који се добија када се у броју \(a\) назначена група битова замени одговарајућим битовима броја \(b\). У другој линији исписати ненегативан цео број, који се добија када се у броју \(b\) назначена група битова замени одговарајућим битовима броја \(a\).
Пример
Улаз
500 350 54 7
Излаз
340 510
Објашњење
Бинарни записи бројева 500 и 350 су редом 0001 1111 0100
и 0001 0101 1110
. На следећој шеми дати су 64-битни записи
бројева 500 и 350 са означеним бројањем позиција. Позиције поменуте
групе од 7 битова су маркиране знацима X
. На тим местима
дати бројеви размењују битове. На крају су дати 64-битни записи бројева
са размењеним битовима.
p = 54 10 20 30 40 50 | 60 | | | | | | | | 0000000000000000000000000000000000000000000000000000000111110100 = 500 0000000000000000000000000000000000000000000000000000000101011110 = 350 XXXXXXX 0000000000000000000000000000000000000000000000000000000101010100 = 340 0000000000000000000000000000000000000000000000000000000111111110 = 510
Вредности бинарних записа 1 0101 0100
и
1 1111 1110
су редом једнаке 340 и 510.
MustBe LogedIn ToSendProblemsForEvaluation