Dada una array arr[] de enteros y una secuencia de la forma:
[ 2, 3, 0, 1, 6, 7, 4, 5, … ] .
También dados dos enteros L y R tales que . La tarea es encontrar la suma de todos los números en el rango dado de L a R.
Ejemplos:
Input : L = 0, R = 5 Output : 19 Explanation : The arr[] is {2, 3, 0, 1, 6, 7}. sum = arr[0] + arr[1] + arr[2] + arr[3] + arr[4] + arr[5] sum = 2 + 3 + 0 + 1 + 6 + 7 Hence, the sum is 19. Input : L = 2, R = 5 Output : 14 Explanation : The arr[] is {0, 1, 6, 7}. sum = arr[2] + arr[3] + arr[4] + arr[5] sum = 0 + 1 + 6 + 7 Hence, the sum is 14.
Enfoque:
para resolver la pregunta mencionada anteriormente, primero debemos observar la secuencia de la array y comprender cómo se genera. La array dada se genera a partir de una secuencia de números enteros que es [0, 1, 2, 3, 4, 5, 6, …]. Inicialmente sumamos 2 a los primeros dos enteros , luego restamos 2 de los siguientes dos enteros y esto continúa. Así que nuestra array recién formada se parece a [ 0+2, 1+2, 2-2, 3-2, 4+2, 5+2, 6-2, 7-2, … ]. Por lo tanto, generamos esta nueva secuencia de enteros hasta R y la almacenamos en una array. Finalmente, calcule la suma de los índices en el rango L a R y devuélvalo.
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ program to find the // sum in given range L to R #include <bits/stdc++.h> using namespace std; // Function to find the sum // within the given range int findSum(int L, int R) { vector<int> arr; // generating array from given sequence int i = 0; int x = 2; while (i <= R) { arr.push_back(i + x); if (i + 1 <= R) arr.push_back(i + 1 + x); x *= -1; i += 2; } // calculate the desired sum int sum = 0; for (int i = L; i <= R; ++i) sum += arr[i]; // return the sum return sum; } // Driven code int main() { // initialise the range int L = 0, R = 5; cout << findSum(L, R); return 0; }
Java
// Java program to find the // sum in given range L to R import java.util.*; class GFG{ // Function to find the sum // within the given range public static int findSum(int L, int R) { ArrayList<Integer> arr = new ArrayList<>(); // Generating array from given sequence int i = 0; int x = 2; while (i <= R) { arr.add(i + x); if (i + 1 <= R) arr.add(i + 1 + x); x *= -1; i += 2; } // Calculate the desired sum int sum = 0; for(i = L; i <= R; ++i) sum += arr.get(i); // return the sum return sum; } // Driver code public static void main(String[] args) { // Initialise the range int L = 0, R = 5; System.out.println(findSum(L, R)); } } // This code is contributed by jrishabh99
Python3
# Python3 program to find the # sum in given range L to R # Function to find the sum # within the given range def findSum(L, R) : arr = [] # generating array from given sequence i = 0 x = 2 k = 0 while (i <= R) : arr.insert(k, i + x) k += 1 if (i + 1 <= R) : arr.insert(k, i + 1 + x) k += 1 x *= -1 i += 2 # calculate the desired sum sum = 0 for i in range(L, R + 1) : sum += arr[i] # return the sum return sum # Driver code # initialise the range L = 0 R = 5 print(findSum(L, R)) # This code is contributed by Sanjit_Prasad
C#
// C# program to find the // sum in given range L to R using System; using System.Collections; class GFG{ // Function to find the sum // within the given range public static int findSum(int L, int R) { ArrayList arr = new ArrayList(); // Generating array from given sequence int i = 0; int x = 2; while (i <= R) { arr.Add(i + x); if (i + 1 <= R) arr.Add(i + 1 + x); x *= -1; i += 2; } // Calculate the desired sum int sum = 0; for(i = L; i <= R; ++i) sum += (int)arr[i]; // return the sum return sum; } // Driver code public static void Main(string[] args) { // Initialise the range int L = 0, R = 5; Console.Write(findSum(L, R)); } } // This code is contributed by rutvik_56
Javascript
<script> //Javascript program to find the // sum in given range L to R // Function to find the sum // within the given range function findSum( L, R) { var arr=[]; // generating array from given sequence var i = 0; var x = 2; while (i <= R) { arr.push(i + x); if (i + 1 <= R) arr.push(i + 1 + x); x *= -1; i += 2; } // calculate the desired sum var sum = 0; for (var i = L; i <= R; ++i) sum += arr[i]; // return the sum return sum; } var L = 0, R = 5; document.write( findSum(L, R)); //This code is contributed by SoumikMondal </script>
19
Complejidad de tiempo : O(N)
Espacio Auxiliar: O(N)
Publicación traducida automáticamente
Artículo escrito por Sanjit_Prasad y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA