Dados dos números L y R . La tarea es encontrar la suma de números en el rango L a R.
Ejemplos:
Entrada: L = 3, R = 6
Salida: 40
Explicación: 3 + 3+4 + 3+4+5 + 3+4+5+6 = 40Entrada: L = 5, R = 6
Salida: 16
Enfoque: Este problema está basado en fórmulas. Para la ilustración que se muestra a continuación, observe la cantidad de veces que cada número se repite en la suma y, dependiendo de eso, se calcula la suma final.
Ilustración: L = 3, R = 6
Suma = 3 + 3+4 + 3+4+5 + 3+4+5+6 = 3+3+3+3 + 4+4+4 + 5+5 + 6 (Al agrupar)
Eso es igual a 3 *4 + 4*3 + 5*2 + 6*1
Por lo tanto, para cualquier rango de L a R, la suma se puede calcular como:
L*D + (L+1)*(D-1) + (L+2)*(D-2) + … + (R-1)*(2) + R*1
A continuación se muestra la implementación del enfoque anterior.
C++
// C++ program for above approach #include <iostream> using namespace std; // Function to return sum int findSum(int L, int R) { // Initializing the variables int sum = 0, d = R - L + 1; for (int i = L; i <= R; i++) { sum += (i * d); d--; } // Return Sum as the final result. return sum; } // Driver Code int main() { int L = 3, R = 6; // Function call cout << findSum(L, R); return 0; }
Java
// Java code to implement above approach import java.util.*; public class GFG { // Function to return sum static int findSum(int L, int R) { // Initializing the variables int sum = 0, d = R - L + 1; for (int i = L; i <= R; i++) { sum += (i * d); d--; } // Return Sum as the final result. return sum; } // Driver code public static void main(String args[]) { int L = 3, R = 6; // Function call System.out.println(findSum(L, R)); } } // This code is contributed by Samim Hossain Mondal.
Python
# Pyhton program for above approach # Function to return sum def findSum(L, R): # Initializing the variables sum = 0 d = R - L + 1 for i in range(L, R + 1): sum += (i * d) d = d - 1 # Return Sum as the final result. return sum # Driver Code L = 3 R = 6 # Function call print(findSum(L, R)) # This code is contributed by Samim Hossain Mondal.
C#
// C# code to implement above approach using System; public class GFG { // Function to return sum static int findSum(int L, int R) { // Initializing the variables int sum = 0, d = R - L + 1; for (int i = L; i <= R; i++) { sum += (i * d); d--; } // Return Sum as the final result. return sum; } // Driver code public static void Main() { int L = 3, R = 6; // Function call Console.WriteLine(findSum(L, R)); } } // This code is contributed by ukasp.
Javascript
<script> // JavaScript code for the above approach // Function to return sum function findSum(L, R) { // Initializing the variables let sum = 0, d = R - L + 1; for (let i = L; i <= R; i++) { sum += (i * d); d--; } // Return Sum as the final result. return sum; } // Driver Code let L = 3, R = 6; // Function call document.write(findSum(L, R)); // This code is contributed by Potta Lokesh </script>
40
Complejidad temporal: O(R-L+1)
Espacio Auxiliar: O(1), ya que no se ha ocupado ningún espacio extra.