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

Cerinţa
Se dau mai multe numere naturale cu cel mult 9 cifre fiecare. Să se determine cele mai mari două numere de 3 cifre care nu se găsesc printre numerele date.

Date de intrare
Fişierul de intrare nrlipsa.in conţine cel mult 100000 de numere, dispuse pe mai multe linii, numerele de pe fiecare linie fiind separate prin unul sau mai multe spaţii.

Date de ieşire
Fişierul de ieşire nrlipsa.out va conţine pe prima linie cele mai mari două numere de trei cifre care nu apar în fişierul de intrare, ordonate descrescător, separate prin exact un spaţiu.

Restricţii şi precizări
dacă nu există două numere de trei cifre care să nu se afle în fişierul de intrare atunci se va afişa mesajul NU.

Exemplu
nrlipsa.in

12 2345 123 67 989 6 999
123 67 989 999
nrlipsa.out

998 997


#239 pbinfo

Răspunsuri la întrebare

Răspuns de pmarian98
9

#include<bits/stdc++.h>

using namespace std;

ifstream fin ("nrlipsa.in");

ofstream fout ("nrlipsa.out");

int v[1000];

int main ()

{

   int i,x,a=0,b=0;

   while (fin>>x)

   {

       if (x<1000&&x>99)

           v[x]++;

   }

   for (i=999;i>=100;i--)

        if (v[i]==0)

          if (b==0)

           b=i;

          else

          {

              a=i;

              break;

          }

   if (a==0||b==0)

       fout<<"NU"<<'\n';

   else

       fout<<b<<" "<<a<<'\n';

 return 0;

}

Răspuns de boiustef
4

#include <iostream>

#include <fstream>

using namespace std;

int v[1000];

int main()

{

   ifstream f("nrlipsa.in");

   ofstream g("nrlipsa.out");

   int num, a, b, nr=0, i;

   while (f >> num)

   {

        if (num>=100 && num<1000)

       { if (v[num]==0) {v[num]=1; ++nr;}}

   }

   if (900-nr<2) g << "NU";

   else

   {

       i=999;

       while (v[i]==1) --i;

       b=i; --i;

       while (v[i]==1) --i;

       a=i;

       g << b << " " << a;

   }

   return 0;

}

Alte întrebări interesante