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



filter_none

edit
close

play_arrow

link
brightness_4
code

// C++ program to find Sum of alternating
// sign Squares of first N natural numbers
  
#include <iostream>
using namespace std;
  
// Fucntion 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;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java program to find Sum of alternating
// sign Squares of first N natural numbers
class GFG
{
          
    // Fucntion 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

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python3 program to find Sum of alternating 
# sign Squares of first N natural numbers 
  
# Fucntion 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

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# program to find Sum of alternating
// sign Squares of first N natural numbers
using System;
  
class GFG
{
          
    // Fucntion 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

chevron_right


Output:

-3

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

    \[\LARGE 1^{2}-2^{2}+3^{2}-4^{2}+... = (-1)^{n+1} \text{ } \frac{n(n+1)}{2}\]

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 \frac{n(n+1)}{2} and print the result.

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

// C++ program to find Sum of alternating
// sign Squares of first N natural numbers
  
#include <iostream>
using namespace std;
  
// Fucntion 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;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java program to find Sum of alternating
// sign Squares of first N natural numbers
class GFG 
{
      
    // Fucntion 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

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python3 program to find Sum of alternating 
# sign Squares of first N natural numbers 
  
# Fucntion 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

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# program to find Sum of alternating
// sign Squares of first N natural numbers
  
using System;
  
public class GFG 
{
      
    // Fucntion 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

chevron_right


Output:

-3

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.




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.



Improved By : AnkitRai01