Self XOR

Time limit: 0.01s Memory limit: 1MB Input: Output:

Cerință

Se dă codul main.cpp care se citește pe sine, face operația XOR între caracterele din fișier, și afișează rezultatul.

Schimbați un singur caracter din codul sursă, astfel încât rezultatul să rămână același.

Accesați programul de aici sau din secțiunea „Atașamente” din lateral.

Operația XOR

XOR este o operație între două valori care se face pe biții acelor valori.

Spre exemplu, std::cout << ('a' ^ 'C'); afișează 3434.

Asta, deoarece codificările ASCII pentru a și C sunt 97(10)97_{(10)}, respectiv 67(10)67_{(10)}.

Reprezentarea în binar a lor este 01100001(2)01100001_{(2)}, respectiv 01000011(2)01000011_{(2)}.

Operația XOR aplicată între cele două este dată de aplicarea pe fiecare pereche de biți de pe aceeași poziție, rezultatul fiind 00100010(2)00100010_{(2)}, adică 34(10)34_{(10)}.

Două proprietăți importante sunt:

  • comutativitatea: a ^ b == b ^ a
  • autoanihilarea: a ^ a == 0

Date de intrare

Nu se dă nimic la intrare. Fișierul cpp se citește pe el însuși.

Date de ieșire

Se afișează un număr.

Restricții și precizări

  • Trebuie să înlocuiți exact un caracter din sursă
  • Trebuie ca la rulare, să se afișeze același număr, ca înainte de modificare.
  • Codul din concurs a fost puțin modificat.
  • Pentru a verifica dacă nu ați adăugat/șters din greșeală vreun caracter, codul sursă trimis trebuie să aibă dimensiunea de 398 B.

Log in or sign up to be able to send submissions!