Editorial for Suma de 1 a N


Remember to use this editorial only when stuck, and not to copy-paste code from it. Please be respectful to the problem author and editorialist.
Submitting an official solution before solving the problem yourself is a bannable offence.

Author: leosangue

Para este problema existen dos formas sencillas de obtener la suma de los números del 1 al N: utilizando la fórmula de Gauss o recorriendo todos los números con un ciclo for.

Solución 1: Fórmula de Gauss

La fórmula para calcular la suma de los números del 1 al N es:

\[ \frac{N(N+1)}{2} \]

Por ejemplo, si N = 5:

\[ 1+2+3+4+5 = \frac{5(5+1)}{2} = 15 \]

Código de ejemplo
#include <iostream>
using namespace std;

int main(){
    long long n;

    cin >> n;

    long long suma = n * (n + 1) / 2;

    cout << suma;

    return 0;
}

La ventaja de esta solución es que no importa qué tan grande sea N, el cálculo se realiza directamente con una sola fórmula. Su complejidad es O(1).


Solución 2: Utilizando un for

También podemos recorrer todos los números desde 1 hasta N y acumularlos en una variable.

Por ejemplo, para N = 5:

suma = 0
suma = suma + 1 → 1
suma = suma + 2 → 3
suma = suma + 3 → 6
suma = suma + 4 → 10
suma = suma + 5 → 15
Código de ejemplo
#include <iostream>
using namespace std;

int main(){
    long long n;
    long long suma = 0;

    cin >> n;

    for(int i = 1; i <= n; i++){
        suma += i;
    }

    cout << suma;

    return 0;
}

En este caso, el for comienza con i = 1 y continúa mientras i <= n. En cada iteración, el valor de i se agrega a suma.

Esta solución tiene una complejidad de O(N), porque el ciclo se ejecuta N veces.

Comparación
Método Complejidad Idea
Gauss O(1) Utilizar directamente n * (n + 1) / 2
for O(N) Sumar uno por uno todos los números

Para aprender a programarlo, el for ayuda a entender el concepto de acumulador. La fórmula de Gauss, en cambio, es más eficiente cuando solamente necesitas obtener el resultado.


Comments

There are no comments at the moment.