Penso che la domanda potrebbe essere un po 'confusa. Quindi, proverò a spiegarlo prima.Dato uno XOR e SUM di due numeri, come trovare il numero di coppie che li soddisfano?
Diciamo che XOR e SUM di due numeri sono dati. (Si noti che ci sono coppie multiple che possono soddisfare questo.)
Ad esempio, se XOR è 5
e la somma è 9
ci sono 4
coppie soddisfano SUM e XOR. Sono (2, 7)
, (3, 6)
, (6, 3)
, (7, 2)
. Quindi 2+7=9
e 2^7=5
.
Voglio solo trovare il numero di coppie che soddisfa SUM e XOR. Quindi nell'esempio che ho citato è sufficiente la risposta 4
. Non ho bisogno di sapere quali coppie li soddisfano.
Ho preso questo problema da here.
Ho controllato la risposta here. Fornisce una soluzione O (n) che non è sufficiente.
C'è un editoriale che fornisce la soluzione a questo problema. Può essere trovato here. (Cerca la soluzione di 627A)
Il problema è che non riesco a capire la soluzione. Da quello che ho potuto riassumere hanno usato una formula come questo,
(Se ci sono due numeri a e b) poi, a+b = (a XOR b) + (a AND b)*2
Come posso arrivare a questo? Il resto dei passaggi non mi è chiaro.
Se qualcuno può fornire un'idea su come risolvere questo o spiegare la sua soluzione, per favore aiutatemi.
Ok, ho capito questa parte. Allora come faccio a usare questa formula per risolvere il problema? Voglio dire come conto quante coppie soddisfano la somma e lo xor? –