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.
- For each number in 1 to N, find its square
- Add these squares with alternating sign
- 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
// 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