Abans de plantejar aquest problema, us recordem (o informem) que:
Donats dos enters @a@ i @b@, en C++
(@a@^@b@) és el XOR d’@a@ i @b@.
És a dir, n’és el “or exclusiu bit a bit”: el resultat d’operar cada
parell de bits és 1 sii els dos bits són diferents. Per exemple,
(9^12)
(^)
5.
Donats dos enters @x@ i @n@, en C++
(@x@<<@n@) és el resultat
de desplaçar @x@ @n@ bits cap a l’esquerra. Si no hi ha sobreiximents,
dóna el resultat de multiplicar @x@ per 2 elevat a @n@. Per exemple,
(9<<2)
(<<2)
36.
Ara, el problema. L’Edgar ha descobert un nou algorisme de hashing al qual li veu un gran futur en aplicacions criptogràfiques. Semblant a tants altres métodes, combina moltes operacions de bits, per la qual cosa podria ser complicat recuperar la informació original.
L’Edgar ha decidit que treballarà amb enters de bits (és a dir, módul ). Donats dos enters i , defineix:
((^)<<0)
^
((^)<<1)
^ … ^
((^)<<(B-1))
) %(1<<B)
L’Edgar ens assegura (i té raó) que donats i , només hi ha una possible. Ell creu que el seu mètode és prou segur, és a dir, que no es pot obtenir eficientment a partir d’ i de . Demostreu que l’Edgar és un palomo.
L’entrada consisteix en diversos casos, cadascun amb i , dos enters entre 0 i .
Per a cada cas, escriviu la corresponent.
Autoria: Izan Beltrán
Generació: 2026-01-25T12:00:53.657Z
© Jutge.org, 2006–2026.
https://jutge.org