En algoritmos, proporcione una matriz incremental del entero (-200, … 0, … 500) y quite un número. ¿Cuál es el algoritmo eficiente para encontrar el número que falta?

Calcule la suma que * debería * obtener si todos los números estuvieran presentes, como (superior + inferior) * (superior-inferior + 1) / 2.

Luego sume los números que recibió juntos y reste eso del número que debería haber obtenido. La diferencia es el número que falta.

Por ejemplo:

#include
#include
#include
#include
#include

int main () {
int inferior = -200;
int superior = 500;
int rango = superior – inferior;

srand (unsigned (time (NULL)));
std :: vector números;

int n = rand ()% rango + inferior;

para (int i = inferior; i <= superior; i ++)
si (i! = n)
números.push_back (i);

suma larga = estándar :: acumular (números.begin (), números.end (), 0L);

comp largo = (superior + inferior) * (superior-inferior + 1) / 2 – suma;

std :: cout << "Elegido =" << n << "\ n";
std :: cout << "Computed =" << comp << "\ n";
}