Hackerrank – Sum vs XOR

Hackerrank – Popis problému

Celý popis zadania sa nacháza – Hackerrank.

Riešenie

Výsledok je matematický trik.
Spočítaj počet núl, ktoré sa nachádzajú v binárom čísle n a výsledok je mocnina 2 s exponentom, ktorý má hodnotu počtu núl.

Keď sa pozrieme na pravdivostnú tabuľku operácie XOR:

Potom sa pozrieme na pravdivostnú tabuľku sčítania v dvojkovej sústave:

To znamená, že ščítanie dvoch binárnych číslic je XOR dvoch binárnych číslic. Do vyššieho rádu sa prenáša len pri operácii AND dvoch binárnych číslic.
Ak sa pozrieme na 2 operandy A a B, kde A ^ B = A + B. My potrebujeme vedieť prípady, keď nenastáva posun 1 do vyššieho rádu. Ten nastane iba vtedy, ak sú i-tý bit v A a i-tý bit v B rovný 1. Ak je nejaký bit v A rovný nula, vtedy môže byť bit na rovnakom indexe v B rovný hocičomu.

Vytvoril som riešenie v týchto programovacích jazykoch:

Všetky riešenia sú dostupné aj na mojom GitHub profile.

Java

JavaScript

Scala

Ruby

Leave a Reply

Vaša e-mailová adresa nebude zverejnená. Vyžadované polia sú označené *