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

in fisierul text numere.in sunt cel mult 9998 de numere naturale nenule, distincte. scrieti un program c/c++ eficient din punct de vedere al timpului de executie, care sa scrie in fisierul numere.out, pe o linie, in ordine descrescatoare, separate prin cate un spatiu, numerele naturale nenule de cel mult 4 cifre, care nu apar in fisierul numere.in​

Răspunsuri la întrebare

Răspuns de boiustef
1

Răspuns:

#include <iostream>

#include <fstream>

#include <bitset>

using namespace std;

bitset<10000>v;

ifstream f("numere.in");

ofstream g("numere.out");

int num;

int main()

{

  while (f >> num)

  {

      if ( num<=9999) v[num]=1;

  }

  for (num=9999; num>=1000; --num)

   if (v[num]==0) g << num << " ";

}

Explicație:

am aplicat vector caracteristic pe biţi, care foloseşte cu mult mai puţină memorie.


boiustef: scuze, am de făcut o rectificare... ultimul for trebuie de redactat astfel:
for (num=9999; num >= 0; --num)
if (v[num]==0) g << num << " ";
boiustef: din start credeam că trebuiesc afişate numai cele de 4 cifre, după am observat că e spus "cel mult de 4 cifre", am făcut rectificări în cod, dar aici nu am observat
Alte întrebări interesante