45 votes

Algorithme pour trouver une solution pour A xor X = B + X

<blockquote> <p>Étant donné les entiers A et B, recherchez l’entier X de sorte que :</p> <ul> <li>A,B < 2*1e18</li> <li>A xor X = B + X</li> </ul> <p>Je doute fortement qu’il soit possible de résoudre cette équation en utilisant les mathématiques. C’est un problème de codage que j’ai rencontré il y a 3 ans et même maintenant, je ne peux pas le résoudre moi-même. </p><p>Mon code jusqu’à présent: (c’est la solution de la force brute)</p><pre><code></code></pre></blockquote>

45voto

user23013 Points 566

Notez que `` . Ainsi:

Et nous avons :

Si la condition est remplie, pour tout entier Y qui n’a pas de bits définis dans A, (((A - B)>>1) ou Y) est une solution. Si vous ne voulez qu’une seule solution, vous pouvez utiliser ((A - B)>>1), où Y = 0. Sinon, il n’y a pas de solution.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X