Se citesc din fisiere numerele naturale
Determinați un număr x astfel încât daca 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ă​


Răspuns :

Rezolvam problema matematic :

Fie a[n] - sir de numere naturale

x - numar natural

Daca x are proprietatea respectiva atunci :

a[1]-x + a[2]-x + a[3] - x + ...... + a[n] - x = 0

a[1]  + a[2] + a[3] + ... + a[n] - nx = 0

De aici scoatem x :

x = (a[1] + a[2] + ... + a[n]) / n

Altfel spus x este egal cu media aritmetica a numerelor date (daca acesta exista - este natural)

Ai mai jos algoritmul in C++ (testat) :

#include <iostream>

#include <fstream>

using namespace std;

ifstream f("nr.txt");

int main(){

   int suma=0, nr=0, v, ma;

   //Citim numerele, le contorizam si calculam suma

   while(f >> v){

       suma+=v;

       nr++;

   }

   //Calculam media

   ma = suma/nr;

   //Verificam daca numarul e natural

   if(ma*nr==suma){

       //Afisam media

       cout << ma;

   }

   //altfel afisam -1

   else cout << -1;

}