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
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
Matematică,
8 ani în urmă
Matematică,
8 ani în urmă
Matematică,
8 ani în urmă
Biologie,
8 ani în urmă
Limba română,
9 ani în urmă
Limba română,
9 ani în urmă