Размена групе битова

време меморија улаз излаз
1 s 64 Mb стандардни излаз стандардни улаз

Написати програм који за дате бројеве \(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.

Морате бити улоговани како бисте послали задатак на евалуацију.