Skip to content
Related Articles

Related Articles

Improve Article

Find sum in range L to R in given sequence of integers

  • Last Updated : 13 May, 2021

Given an array arr[] of integers and a sequence of the form: 
 

[ 2, 3, 0, 1, 6, 7, 4, 5, … ]
 

Also given two integer L and R such that 0 \le L \le R \le 10^{6} . The task is to find the sum of all numbers in given range from L to R.
Examples: 
 

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.

 

Approach: 
To solve the question mentioned above we first have to observe the sequence of the array and understand how is it generated. The given array is generated from a sequence of whole numbers which is [ 0, 1, 2, 3, 4, 5, 6, … ]. Initially we add 2 to the first two integers, then we subtract 2 from the next two integers and this goes on. So our newly formed array looks like [ 0+2, 1+2, 2-2, 3-2, 4+2, 5+2, 6-2, 7-2, … ]. Hence we generate this new sequence of integers up to R and store it in array. Finally, calculate the sum from indices in range L to R and return it.
Below is the implementation of the above approach: 
 



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>
Output: 
19

 

Time Complexity : O(N)
 

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

In case you wish to attend live classes with experts, please refer DSA Live Classes for Working Professionals and Competitive Programming Live for Students.




My Personal Notes arrow_drop_up