Problème
En utilisant les entiers de 1 à n, calculez deux quantités : additionnez d'abord les entiers puis élevez le résultat au carré ; séparement, élevez chaque entier au carré puis additionnez ces carrés. Retournez la différence entre la première quantité et la seconde.
Implémentez difference_of_squares(n).
Entrée
n : Le dernier entier à inclure.
Sortie
Retournez carré-de-la-somme moins somme-des-carrés.
Contraintes
0 ≤ n ≤ 50 000. Pour n = 0, les deux sommes valent 0. Toutes les valeurs nécessaires tiennent dans des entiers signés 64 bits.
Exemples
Entrée :
n = 4
Sortie attendue :
expected = 70
Entrée :
long long n = 4;
Sortie attendue :
long long expected = 70;
Entrée :
long n = 4;
Sortie attendue :
long expected = 70;
Explication
(1 + 2 + 3 + 4)² = 100. La somme des carrés est 1 + 4 + 9 + 16 = 30. Soustraction : 100 − 30 = 70.
Entrée :
n = 1
Sortie attendue :
expected = 0
Entrée :
long long n = 1;
Sortie attendue :
long long expected = 0;
Entrée :
long n = 1;
Sortie attendue :
long expected = 0;
Explication
Les deux quantités valent 1, donc leur différence est 0.
Comment l'aborder
Essayez d'abord seul, puis ouvrez les indices un par un.
Indice 1
Tu compares deux résumés de la même plage : l’un par la somme, l’autre par le carré avant de sommer.
Indice 2
Utilise les formules fermées pour la somme des entiers et la somme des carrés plutôt que de boucler sur chaque valeur.
Indice 3
Gère bien le cas zéro, car les deux quantités doivent valoir zéro.
Complexité attendue
temps O(1), espace supplémentaire O(1)
Références
Ce défi a été adapté pour CodeUtility. Suivez l'énoncé et les contraintes ci-dessus.