Rezolvarea problemei Hidden Number de pe site pbinfo cu explicatii:
Cerința
Se citesc din fișier numere naturale. Determinați un număr x
astfel încât dacă scădem din x
pe rând fiecare număr citit atunci suma diferențelor să fie 0
. Se va afișa numărul determinat sau -1
, dacă un astfel de număr nu există.
Date de intrare
Fișierul de intrare `hidden_number.in
` conține pe prima linie șirul de numere naturale separate prin spații.
Date de ieșire
Fișierul de ieșire `hidden_number.out
` va conține pe prima linie numărul x
sau -1
conform cerinței.
Restricții și precizări
- numerele vor fi mai mici decât
1.000.000
- numărul de numere citite este maximum
1.000
Problema care trebuie avuta in vedere este ca se citesc pe rand numere din fisierul de intrare si daca citirea se face cu `while(!cin.eof())’ se citeste la final o valoare nula care afecteza numarul de valori citite din fisier (deci care este numarata).
Codul programului ar fi:
#include <fstream>
using namespace std;
ifstream cin("hidden_number.in");
ofstream cout("hidden_number.out");
int nr, c = 0, suma = 0;
int main()
{
while(cin >> nr){
c++;
suma += nr;
}
if (suma % c == 0)
{
cout << suma/c;
}else{
cout << -1;
}
cin.close();cout.close();
return 0;
}
Incearca sa rezolvi si tu si vezi daca obtii rezultatele corecte!