Rezolvare completă PbInfo #2714 FrecvImp

Cerința

Se dă un șir format din n numere naturale. Toate valorile putere a lui 2 din acest șir au frecvență pară, cu o singură excepție. Determinați această valoare – putere a lui 2 cu frecvență impară.

Date de intrare

Fișierul de intrare frecvimp.in conține pe prima linie numărul n, iar pe a doua linie n numere naturale separate prin spații.

Date de ieșire

Fișierul de ieșire frecvimp.out va conține pe prima linie numărul p, reprezentând singura valoare din șirul dat care este putere a lui 2 și are frecvență impară.

Restricții și precizări

  • 1 ≤ n ≤ 1000000
  • numerele de pe a doua linie a fișierului de intrare sunt natural, nenule și mai mici decât \( 9223372036854775807 \)
  • \( 9223372036854775807 = 2^{63}-1 \)

Exemplu

frecvimp.in

10
41 235 64 41 512 64 1488 512 361 512

frecvimp.out

512

Explicație

În fișierul de intrare sunt 2 puteri ale lui 2, 64 și 512, dintre care 512 apare de 3 ori.

Cum e corect?

cout < "As la info"; cout << "As la info"; cout >> "As la info";

Felicitări! Poți mai mult?

Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.

Greșit, dar nu-i bai!

Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.

Rezolvare

Iată rezolvarea de 100 de puncte pentru problema FrecvImp:

#include <fstream>

using namespace std;

ifstream in("frecvimp.in");
ofstream out("frecvimp.out");

int main()
{
    int n;
    in >> n;
    long long a = 0;
    while(n--)
    {
        long long x;
        in >> x;
        if (!(x & (x - 1)))// verificam daca numarul este putere a lui 2
        {
            if (a == 0) a = x; 
            else a ^= x; // folosim xor
        }
    }

    out << a; // afisam puterea lui 2 cu frecventa impara

    return 0;
}

Atenție

Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa Adresa de email.

Rezolvarea problemei #2714 FrecvImp

Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #2714 FrecvImp de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.

Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!