Problema
Usando los enteros del 1 al n, calcula dos cantidades: primero suma los enteros y eleva el resultado al cuadrado; por separado, eleva al cuadrado cada entero y suma esos cuadrados. Devuelve la primera cantidad menos la segunda.
Implementa difference_of_squares(n).
Entrada
n: El último entero a incluir.
Salida
Devuelve el cuadrado de la suma menos la suma de los cuadrados.
Restricciones
0 ≤ n ≤ 50,000. Para n = 0, ambas sumas son 0. Todos los valores requeridos caben en enteros con signo de 64 bits.
Ejemplos
Entrada:
n = 4
Salida esperada:
expected = 70
Entrada:
long long n = 4;
Salida esperada:
long long expected = 70;
Entrada:
long n = 4;
Salida esperada:
long expected = 70;
Explicación
(1 + 2 + 3 + 4)² = 100. La suma de los cuadrados es 1 + 4 + 9 + 16 = 30. Resta: 100 − 30 = 70.
Entrada:
n = 1
Salida esperada:
expected = 0
Entrada:
long long n = 1;
Salida esperada:
long long expected = 0;
Entrada:
long n = 1;
Salida esperada:
long expected = 0;
Explicación
Ambas cantidades son iguales a 1, así que su diferencia es 0.
Cómo abordarlo
Inténtalo primero por tu cuenta y luego abre las pistas una a una.
Pista 1
Estás comparando dos resúmenes del mismo rango: uno basado en sumar primero, y otro en elevar al cuadrado primero.
Pista 2
Usa las fórmulas cerradas para la suma de enteros y la suma de cuadrados en vez de recorrer cada valor.
Pista 3
Trata con cuidado el caso cero, porque ambas cantidades deben ser cero ahí.
Complejidad esperada
tiempo O(1), espacio extra O(1)
Referencias
Este reto está adaptado para CodeUtility. Sigue el enunciado y las restricciones indicadas arriba.