Open In App

Sum of alternating sign Squares of first N natural numbers

Given a number N, the task is to find the sum of alternating sign squares of first N natural numbers, i.e.,
 

12 – 22 + 32 – 42 + 52 – 62 + …. 
 




Examples: 
 

Input: N = 2
Output: 5
Explanation:
Required sum = 12 - 22 = -1

Input: N = 8
Output: 36
Explanation:
Required sum 
= 12 - 22 + 32 - 42 + 52 - 62 + 72 - 82 
= 36


 




Naive approach: O(N) 
The Naive or Brute force approach to solve this problem states to find the square of each number from 1 to N and add them with alternating sign in order to get the required sum. 
 

  1. For each number in 1 to N, find its square
  2. Add these squares with alternating sign
  3. This would give the required sum.


Below is the implementation of the above approach: 
 

// C++ program to find Sum of alternating
// sign Squares of first N natural numbers
 
#include <iostream>
using namespace std;
 
// Function to calculate
// the alternating sign sum
int summation(int n)
{
 
    // Variable to store the sum
    int sum = 0;
 
    // Loop to iterate each number
    // from 1 to N
    for (int i = 1; i <= n; i++) {
 
        // The alternating sign is put
        // by checking if the number
        // is even or odd
        if (i % 2 == 1)
            // Add the square with the sign
            sum += (i * i);
 
        else
            // Add the square with the sign
            sum -= (i * i);
    }
    return sum;
}
 
// Driver code
int main()
{
    int N = 2;
    cout << summation(N);
    return 0;
}

                    
// Java program to find Sum of alternating
// sign Squares of first N natural numbers
class GFG
{
         
    // Function to calculate
    // the alternating sign sum
    static int summation(int n)
    {
     
        // Variable to store the sum
        int sum = 0;
     
        // Loop to iterate each number
        // from 1 to N
        for (int i = 1; i <= n; i++) {
     
            // The alternating sign is put
            // by checking if the number
            // is even or odd
            if (i % 2 == 1)
 
                // Add the square with the sign
                sum += (i * i);
     
            else
 
                // Add the square with the sign
                sum -= (i * i);
        }
        return sum;
    }
     
    // Driver code
    public static void main (String[] args)
    {
        int N = 2;
        System.out.println(summation(N));
    }
}
 
// This code is contributed by AnkitRai01

                    
# Python3 program to find Sum of alternating
# sign Squares of first N natural numbers
 
# Function to calculate
# the alternating sign sum
def summation(n) :
 
    # Variable to store the sum
    sum = 0;
 
    # Loop to iterate each number
    # from 1 to N
    for i in range(1, n + 1) :
 
        # The alternating sign is put
        # by checking if the number
        # is even or odd
        if (i % 2 == 1) :
            # Add the square with the sign
            sum += (i * i);
 
        else :
            # Add the square with the sign
            sum -= (i * i);
     
    return sum;
 
 
# Driver code
if __name__ == "__main__" :
 
    N = 2;
    print(summation(N));
 
    # This code is contributed by AnkitRai01

                    
// C# program to find Sum of alternating
// sign Squares of first N natural numbers
using System;
 
class GFG
{
         
    // Function to calculate
    // the alternating sign sum
    static int summation(int n)
    {
     
        // Variable to store the sum
        int sum = 0;
     
        // Loop to iterate each number
        // from 1 to N
        for (int i = 1; i <= n; i++) {
     
            // The alternating sign is put
            // by checking if the number
            // is even or odd
            if (i % 2 == 1)
 
                // Add the square with the sign
                sum += (i * i);
     
            else
 
                // Add the square with the sign
                sum -= (i * i);
        }
        return sum;
    }
     
    // Driver code
    public static void Main()
    {
        int N = 2;
        Console.WriteLine(summation(N));
    }
}
 
// This code is contributed by AnkitRai01

                    
<script>
// JavaScript program to find Sum of alternating
// sign Squares of first N natural numbers
   
    // Function to calculate
    // the alternating sign sum
    function summation(n)
    {
   
        // Variable to store the sum
        let sum = 0;
   
        // Loop to iterate each number
        // from 1 to N
        for (let i = 1; i <= n; i++) {
   
            // The alternating sign is put
            // by checking if the number
            // is even or odd
            if (i % 2 == 1)
                // Add the square with the sign
                sum += (i * i);
   
            else
                // Add the square with the sign
                sum -= (i * i);
        }
        return sum;
    }
   
    // Driver code
 
    let N = 2;
    document.write(summation(N));
 
// This code is contributed by Surbhi Tyagi
 
</script>

                    

Output: 
-3

 

Efficient Approach: O(1) 
There exists a formula for finding the sum of squares of first n numbers with alternating signs: 

   


How does this work? 
 
We can prove this formula using induction.
We can easily see that the formula is true for
n = 1 and n = 2 as sums are 1 and -3 respectively.

Let it be true for n = k-1. So sum of k-1 numbers
is (-1)k(k - 1) * k / 2

In the following steps, we show that it is true 
for k assuming that it is true for k-1.


Sum of k numbers
 =(-1)k (Sum of k-1 numbers + k2)
 =(-1)k+1 ((k - 1) * k / 2 + k2)
 =(-1)k+1 (k * (k + 1) / 2), which is true.


Hence inorder to find the sum of alternating sign squares of first N natural numbers, simply compute the formula and print the result. 
 

// C++ program to find Sum of alternating
// sign Squares of first N natural numbers
 
#include <iostream>
using namespace std;
 
// Function to calculate
// the alternating sign sum
int summation(int n)
{
 
    // Variable to store the absolute sum
    int abs_sum = n * (n + 1) / 2;
 
    // Variable to store the sign
    int sign = n + 1 % 2 == 0 ? 1 : -1;
 
    // Variable to store the resultant sum
    int result_sum = sign * abs_sum;
 
    return result_sum;
}
 
// Driver code
int main()
{
    int N = 2;
    cout << summation(N);
    return 0;
}

                    
// Java program to find Sum of alternating
// sign Squares of first N natural numbers
class GFG
{
     
    // Function to calculate
    // the alternating sign sum
    static int summation(int n)
    {
     
        // Variable to store the absolute sum
        int abs_sum = n * (n + 1) / 2;
     
        // Variable to store the sign
        int sign = n + 1 % 2 == 0 ? 1 : -1;
     
        // Variable to store the resultant sum
        int result_sum = sign * abs_sum;
     
        return result_sum;
    }
     
    // Driver code
    public static void main (String[] args)
    {
        int N = 2;
        System.out.println(summation(N));
    }
}
 
// This code is contributed by AnkitRai01

                    
# Python3 program to find Sum of alternating
# sign Squares of first N natural numbers
 
# Function to calculate
# the alternating sign sum
def summation(n) :
 
    # Variable to store the absolute sum
    abs_sum = n * (n + 1) // 2;
 
    # Variable to store the sign
    sign = 1 if ((n + 1) % 2 == 0 ) else -1;
 
    # Variable to store the resultant sum
    result_sum = sign * abs_sum;
 
    return result_sum;
 
# Driver code
if __name__ == "__main__" :
 
    N = 2;
    print(summation(N));
 
# This code is contributed by AnkitRai01

                    
// C# program to find Sum of alternating
// sign Squares of first N natural numbers
 
using System;
 
public class GFG
{
     
    // Function to calculate
    // the alternating sign sum
    static int summation(int n)
    {
     
        // Variable to store the absolute sum
        int abs_sum = (int)(n * (n + 1) / 2);
     
        // Variable to store the sign
        int sign = n + 1 % 2 == 0 ? 1 : -1;
     
        // Variable to store the resultant sum
        int result_sum = sign * abs_sum;
     
        return result_sum;
    }
     
    // Driver code
    public static void Main()
    {
        int N = 2;
        Console.WriteLine(summation(N));
    }
}
 
// This code is contributed by AnkitRai01

                    
<script>
 
// Javascript program to find Sum of alternating
// sign Squares of first N natural numbers
 
// Function to calculate
// the alternating sign sum
function summation(n)
{
 
    // Variable to store the absolute sum
    var abs_sum = n * (n + 1) / 2;
 
    // Variable to store the sign
    var sign = n + 1 % 2 == 0 ? 1 : -1;
 
    // Variable to store the resultant sum
    var result_sum = sign * abs_sum;
 
    return result_sum;
}
 
// Driver code
var N = 2;
document.write(summation(N));
 
// This code is contributed by rutvik_56.
</script>

                    

Output: 
-3

 

Article Tags :