Informatică, întrebare adresată de ryana2143, 8 ani în urmă

Cerința

Dându-se un șir de numere naturale, să se determine câte dintre ele apar o singură dată.


Date de intrare

Programul citește de la tastatură cel mult 1.000.000 de numere naturale.


Date de ieșire

Programul va afișa pe ecran numărul de numere care apar o singură dată în șir.


Restricții și precizări

numerele citite vor fi mai mici decât 200.000

în șir sunt cel puțin un număr și cel mult 1.000.000 de numere naturale

Exemplul 1:

Intrare


5 4 3 2 3 3 5 6 4 3 3

Ieșire


2

Explicație

Numerele care apar o singură dată sunt 2 și 6.


andrei750238: Cum ai rezolva problema daca vectorul ar fi sortat ?

Răspunsuri la întrebare

Răspuns de misterL
0

Răspuns:

#include<fstream>

#include<vector>

std::ifstream f ("date.in");

std::ofstream g ("date.out");

std::vector<int> fr(1000000, 0);

int n,x;

int main()

{

   while (f>>x)

   {

       fr.at(x)++;

   }

   std::vector<int>::iterator it;

   it = fr.begin();

   while(it!=fr.end())

   {

       if(*it==1)

       n++;

       it++;

   }

   g<<n;

   f.close();

   g.close();

   return 0;

}

Explicație:

Note: Aici ai o solutie cu STL vector. Poti folosi oricand in schimb un raw array.

Alte întrebări interesante