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

C++
#3286
Cerința
Fișierul nrnot.in conține pe prima linie un număr natural n (n∈[2,107]) , iar pe următoarele linii un șir de cel mult 1000 numere naturale din intervalul [1,n]. Numerele sunt ordonate descrescător și sunt separate prin câte un spațiu. Se cere să se determine numărul valorilor naturale distincte din intervalul [1,n] care NU se găsesc în șir.
Date de intrare
Fișierul de intrare nrnot.in conține pe prima linie numărul n, iar pe următoarele linii numere naturale separate prin spații.
Date de ieșire
Fișierul de ieșire nrnot.out va conține pe prima linie numărul k, reprezentând numărul de valori naturale distincte din intervalul [1,n] care nu se găsesc în șir.
Restricții și precizări

2 ≤ n ≤ 10.000.000

numerele de pe a doua linie a fișierului de intrare vor fi mai mici decât 10.000.000
se recomandă evitarea memorării numerelor date într-un tablou sau în altă structură similară!
Exemplu

nrnot.in

10
8 8 8 5 3 3

nrnot.out

7
Explicație

În fișierul de intrare nu se găsesc valorile 10 9 7 6 4 2 1.

Răspunsuri la întrebare

Răspuns de pmarian98
3

Răspuns:

#include <iostream>

#include <fstream>

using namespace std;

ifstream f("nrnot.in");

ofstream g("nrnot.out");

int main()

{

   unsigned total = 0;

   unsigned int n,x,y;

   

   f>>n>>x;

   y=x;

   

   total+=(n-x);

   while(f>>x)

   {

       if(x!=y)

           total+=(y-x-1);

       y=x;

   }

   total+=(x-1);

   if(total!=0)

       g<<total;

   else

       g<<"NU";

   return 0;

}

Explicație:

Alte întrebări interesante