Sum of the elements from index L to R in an array when arr[i] = i * (-1)^i

Given two integers and
and an array arr[] every element of which at index
is calculated as arr[i] = i * (-1)i. The task is to find the sum of these elements of the array within the index range
.
Examples:
Input: L = 1 , R = 5
Output: -3
Sum = (-1) + 2 + (-3) + 4 + (-5) = -3Input: L = 5 , R = 100000000
Output: 49999998
Naive Approach: According to the definition of array elements, each odd element of the array is negative and even element is positive. So, to find the sum run a for loop from (L to R) and maintain the sum of all the odd(negative) and even(positive) numbers. Finally, return the sum.
Efficient Approach: It can be noted that the sum of all the odd elements of this series will always be equal to (totalOdd)2 where totalOdd = total number of odd elements and sum of the even numbers will be totalEven * (totalEven + 1). Now, all we have to do is to find the sum of all the odd elements upto L and upto R. Store the difference of both to get the sum of all the odd elements between L and R. Do this same for even numbers and finally return the difference of even and odd sums.
Below is the implementation of the above approach:
C++
// C++ implementation of above approach#include <bits/stdc++.h>using namespace std;// function to return the odd sumlong int Odd_Sum(int n){ // total odd elements upto n long int total = (n + 1) / 2; // sum of odd elements upto n long int odd = total * total; return odd;}// function to return the even sumlong int Even_Sum(int n){ // total even elements upto n long int total = (n) / 2; // sum of even elements upto n long int even = total * (total + 1); return even;}// Function to find sum from L to R.int sumLtoR(int L, int R){ long int odd_sum, even_sum; odd_sum = Odd_Sum(R) - Odd_Sum(L - 1); even_sum = Even_Sum(R) - Even_Sum(L - 1); // return final sum from L to R return even_sum - odd_sum;}// Driver Programint main(){ int L = 1, R = 5; // function call to print answer cout << sumLtoR(L, R); return 0;} |
Java
// Java implementation of above approachimport java.io.*;class GFG { // function to return the odd sumstatic long Odd_Sum(int n){ // total odd elements upto n long total = (n + 1) / 2; // sum of odd elements upto n long odd = total * total; return odd;}// function to return the even sumstatic long Even_Sum(int n){ // total even elements upto n long total = (n) / 2; // sum of even elements upto n long even = total * (total + 1); return even;}// Function to find sum from L to R.static long sumLtoR(int L, int R){ long odd_sum, even_sum; odd_sum = Odd_Sum(R) - Odd_Sum(L - 1); even_sum = Even_Sum(R) - Even_Sum(L - 1); // return final sum from L to R return even_sum - odd_sum;}// Driver Program public static void main (String[] args) { int L = 1, R = 5; // function call to print answer System.out.println( sumLtoR(L, R)); }}// This code is contributed by shs.. |
Python3
# Python3 implementation of above approach# function to return the odd sumdef Odd_Sum(n): # total odd elements upto n total =(n+1)//2 # sum of odd elements upto n odd = total*total return odd# function to return the even sumdef Even_Sum(n): # total even elements upto n total = n//2 # sum of even elements upto n even = total*(total+1) return evendef sumLtoR(L,R): odd_sum = Odd_Sum(R)-Odd_Sum(L-1) even_sum = Even_Sum(R)- Even_Sum(L-1) # return final sum from L to R return even_sum-odd_sum# Driver codeL =1; R = 5print(sumLtoR(L,R))# This code is contributed by Shrikant13 |
C#
// C# implementation of above approachclass GFG{ // function to return the odd sumstatic long Odd_Sum(int n){ // total odd elements upto n long total = (n + 1) / 2; // sum of odd elements upto n long odd = total * total; return odd;}// function to return the even sumstatic long Even_Sum(int n){ // total even elements upto n long total = (n) / 2; // sum of even elements upto n long even = total * (total + 1); return even;}// Function to find sum from L to R.static long sumLtoR(int L, int R){ long odd_sum, even_sum; odd_sum = Odd_Sum(R) - Odd_Sum(L - 1); even_sum = Even_Sum(R) - Even_Sum(L - 1); // return final sum from L to R return even_sum - odd_sum;}// Driver Codepublic static void Main () { int L = 1, R = 5; // function call to print answer System.Console.WriteLine(sumLtoR(L, R));}}// This code is contributed by mits |
PHP
<?php// PHP implementation of above approach// function to return the odd sumfunction Odd_Sum($n){ // for total odd elements upto n // divide by 2 $total = ($n + 1) >> 1; // sum of odd elements upto n $odd = $total * $total; return $odd;}// function to return the even sumfunction Even_Sum($n){ // for total even elements upto n // divide by 2 $total = $n >> 1; // sum of even elements upto n $even = $total * ($total + 1); return $even;}// Function to find sum from L to R.function sumLtoR($L, $R){ $odd_sum = Odd_Sum($R) - Odd_Sum($L - 1); $even_sum = Even_Sum($R) - Even_Sum($L - 1); // print final sum from L to R return $even_sum - $odd_sum ;}// Driver Code$L = 1 ;$R = 5;// function call to print answerecho sumLtoR($L, $R);// This code is contributed by ANKITRAI1?> |
Javascript
<script>// Javascript implementation of above approach// Function to return the odd sumfunction Odd_Sum(n){ // Total odd elements upto n var total = parseInt((n + 1) / 2); // Sum of odd elements upto n var odd = total * total; return odd;}// Function to return the even sumfunction Even_Sum(n){ // Total even elements upto n var total = parseInt((n) / 2); // Sum of even elements upto n var even = total * (total + 1); return even;}// Function to find sum from L to R.function sumLtoR(L, R){ var odd_sum, even_sum; odd_sum = Odd_Sum(R) - Odd_Sum(L - 1); even_sum = Even_Sum(R) - Even_Sum(L - 1); // Return final sum from L to R return even_sum - odd_sum;}// Driver codevar L = 1, R = 5;// Function call to print answerdocument.write(sumLtoR(L, R));// This code is contributed by SoumikMondal</script> |
-3
Complexity Analysis:
- Time Complexity: O(1)
- Auxiliary Space: O(1), since no extra space has been taken.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 zambiatek!



