# 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) = -3

Input: L = 5 , R = 100000000
Output: 49999998

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

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++

 `// CPP implementation of above approach ` `#include ` `using` `namespace` `std; ` ` `  `// function to return the odd sum ` `long` `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 sum ` `long` `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 Program ` `int` `main() ` `{ ` ` `  `    ``int` `L = 1, R = 5; ` ` `  `    ``// function call to print answer ` `    ``cout << sumLtoR(L, R); ` ` `  `    ``return` `0; ` `} `

## Java

 `// Java implementation of above approach ` ` `  `import` `java.io.*; ` ` `  `class` `GFG { ` `     `  ` `  ` `  `// function to return the odd sum ` `static` `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 sum ` `static` `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 sum ` `def` `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 sum ` `def` `Even_Sum(n): ` ` `  `    ``# total even elements upto n ` `    ``total ``=` `n``/``/``2` ` `  `    ``# sum of even elements upto n ` `    ``even ``=` `total``*``(total``+``1``) ` `    ``return` `even ` ` `  `def` `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 code ` `L ``=``1``; R ``=` `5` `print``(sumLtoR(L,R)) ` ` `  `# This code is contributed by Shrikant13 `

## C#

 `// C# implementation of above approach ` `class` `GFG ` `{ ` `     `  `// function to return the odd sum ` `static` `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 sum ` `static` `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 Code ` `public` `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

 `> 1; ` ` `  `    ``// sum of odd elements upto n ` `    ``\$odd` `= ``\$total` `* ``\$total``; ` ` `  `    ``return` `\$odd``; ` `} ` ` `  `// function to return the even sum ` `function` `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 answer ` `echo` `sumLtoR(``\$L``, ``\$R``); ` ` `  `// This code is contributed by ANKITRAI1 ` `?> `

Output:

```-3
``` My Personal Notes arrow_drop_up Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.