Related Articles
Sum of the elements from index L to R in an array when arr[i] = i * (-1)^i
• Difficulty Level : Medium
• Last Updated : 04 Dec, 2018

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

Attention reader! Don’t stop learning now. Get hold of all the important mathematical concepts for competitive programming with the Essential Maths for CP Course at a student-friendly price. To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

My Personal Notes arrow_drop_up