Given a number N. The task is to write a program to find the N-th term in the series:
1, 11, 55, 239, 991, …
Examples:
Input: N = 3 Output: 55 Input: N = 4 Output: 239
Approach-1:
On writing down the binary representation of the given numbers, a pattern can be observed.
1 = 1
11 = 1011
55 = 110111
239 = 11101111
.
.
.
Hence for N = 1, the answer will always be one. For N-th term the binary string will be (n-1)*1 + (0) + (n)*1 which is converted to decimal value to get the answer.
Below is the implementation of the above approach:
// C++ program to find the N-th term // in 1, 11, 55, 239, 991, .... #include <bits/stdc++.h> using namespace std;
// Function to return the decimal value // of a binary number int binaryToDecimal(string n)
{ string num = n;
int dec_value = 0;
// Initializing base value to 1, i.e 2^0
int base = 1;
int len = num.length();
for ( int i = len - 1; i >= 0; i--) {
if (num[i] == '1' )
dec_value += base;
base = base * 2;
}
return dec_value;
} // find the binary representation // of the N-th number in sequence int numberSequence( int n)
{ // base case
if (n == 1)
return 1;
// answer string
string s = "" ;
// add n-1 1's
for ( int i = 1; i < n; i++)
s += '1' ;
// add 0
s += '0' ;
// add n 1's at end
for ( int i = 1; i <= n; i++)
s += '1' ;
int num = binaryToDecimal(s);
return num;
} // Driver Code int main()
{ int n = 4;
cout << numberSequence(n);
return 0;
} |
// Java program to find the N-th // term in 1, 11, 55, 239, 991, .... import java.util.*;
class GFG
{ // Function to return the decimal // value of a binary number static int binaryToDecimal(String n)
{ String num = n;
int dec_value = 0 ;
// Initializing base
// value to 1, i.e 2^0
int base = 1 ;
int len = num.length();
for ( int i = len - 1 ; i >= 0 ; i--)
{
if (num.charAt(i) == '1' )
dec_value += base;
base = base * 2 ;
}
return dec_value;
} // find the binary representation // of the N-th number in sequence static int numberSequence( int n)
{ // base case
if (n == 1 )
return 1 ;
// answer string
String s = "" ;
// add n-1 1's
for ( int i = 1 ; i < n; i++)
s += '1' ;
// add 0
s += '0' ;
// add n 1's at end
for ( int i = 1 ; i <= n; i++)
s += '1' ;
int num = binaryToDecimal(s);
return num;
} // Driver Code public static void main(String args[])
{ int n = 4 ;
System.out.println(numberSequence(n));
} } // This code is contributed // by Arnab Kundu |
# Python 3 program to find the N-th term # in 1, 11, 55, 239, 991, .... # Function to return the decimal value # of a binary number def binaryToDecimal(n):
num = n
dec_value = 0
# Initializing base value to 1, i.e 2^0
base = 1
l = len (num)
for i in range (l - 1 , - 1 , - 1 ):
if (num[i] = = '1' ):
dec_value + = base
base = base * 2
return dec_value
# find the binary representation # of the N-th number in sequence def numberSequence(n):
# base case
if (n = = 1 ):
return 1
# answer string
s = ""
# add n-1 1's
for i in range ( 1 , n):
s + = '1'
# add 0
s + = '0'
# add n 1's at end
for i in range ( 1 ,n + 1 ):
s + = '1'
num = binaryToDecimal(s)
return num
# Driver Code if __name__ = = "__main__" :
n = 4
print (numberSequence(n))
# this code is contributed by ChitraNayal |
// C# program to find the N-th // term in 1, 11, 55, 239, 991, .... using System;
class GFG
{ // Function to return the decimal // value of a binary number static int binaryToDecimal(String n)
{ String num = n;
int dec_value = 0;
// Initializing base
// value to 1, i.e 2^0
int base_ = 1;
int len = num.Length;
for ( int i = len - 1; i >= 0; i--)
{
if (num[i] == '1' )
dec_value += base_;
base_ = base_ * 2;
}
return dec_value;
} // find the binary representation // of the N-th number in sequence static int numberSequence( int n)
{ // base case
if (n == 1)
return 1;
// answer string
String s = "" ;
// add n-1 1's
for ( int i = 1; i < n; i++)
s += '1' ;
// add 0
s += '0' ;
// add n 1's at end
for ( int i = 1; i <= n; i++)
s += '1' ;
int num = binaryToDecimal(s);
return num;
} // Driver Code public static void Main()
{ int n = 4;
Console.WriteLine(numberSequence(n));
} } // This code is contributed // by Subhadeep |
<?php // PHP program to find the N-th term // in 1, 11, 55, 239, 991, .... // Function to return the decimal // value of a binary number function binaryToDecimal( $n )
{ $num = $n ;
$dec_value = 0;
// Initializing base value
// to 1, i.e 2^0
$base = 1;
$len = strlen ( $num );
for ( $i = $len - 1; $i >= 0; $i --)
{
if ( $num [ $i ] == '1' )
$dec_value += $base ;
$base = $base * 2;
}
return $dec_value ;
} // find the binary representation // of the N-th number in sequence function numberSequence( $n )
{ // base case
if ( $n == 1)
return 1;
// answer string
$s = "" ;
// add n-1 1's
for ( $i = 1; $i < $n ; $i ++)
$s .= '1' ;
// add 0
$s .= '0' ;
// add n 1's at end
for ( $i = 1; $i <= $n ; $i ++)
$s .= '1' ;
$num = binaryToDecimal( $s );
return $num ;
} // Driver Code $n = 4;
echo numberSequence( $n );
// This code is contributed by mits ?> |
<script> // Javascript program to find the N-th term // in 1, 11, 55, 239, 991, .... // Function to return the decimal value // of a binary number function binaryToDecimal(n)
{ let num = n;
let dec_value = 0;
// Initializing base value to 1, i.e 2^0
let base = 1;
let len = num.length;
for (let i = len - 1; i >= 0; i--) {
if (num[i] == '1' )
dec_value += base;
base = base * 2;
}
return dec_value;
} // find the binary representation // of the N-th number in sequence function numberSequence(n)
{ // base case
if (n == 1)
return 1;
// answer string
let s = "" ;
// add n-1 1's
for (let i = 1; i < n; i++)
s += '1 ';
// add 0
s += ' 0 ';
// add n 1' s at end
for (let i = 1; i <= n; i++)
s += '1' ;
let num = binaryToDecimal(s);
return num;
} // Driver Code let n = 4; document.write(numberSequence(n)); // This code is contributed by subhammahato348. </script> |
239
Time Complexity: O(N), as we are using a loop to traverse N times.
Auxiliary Space: O(N), as we are using extra space for string.
Approach-2:
The series has a general formulae of 4N-2N-1 which is used to get the N-th term in series.
Below is the implementation of the above approach:
// C++ program to find the N-th term // in 1, 11, 55, 239, 991, .... #include <bits/stdc++.h> using namespace std;
// Function to find the N-th term int numberSequence( int n)
{ // calculates the N-th term
int num = pow (4, n) - pow (2, n) - 1;
return num;
} // Driver Code int main()
{ int n = 4;
cout << numberSequence(n);
return 0;
} |
// Java program to find the N-th // term in 1, 11, 55, 239, 991, .... class GFG
{ // Function to find the N-th term static int numberSequence( int n)
{ // calculates the N-th term
int num = ( int )(Math.pow( 4 , n) -
Math.pow( 2 , n)) - 1 ;
return num;
} // Driver Code public static void main(String args[])
{ int n = 4 ;
System.out.println(numberSequence(n));
} } // This code is contributed // by Arnab Kundu |
# Python 3 program to find N-th term # in 1, 11, 55, 239, 991, .... # calculate Nth term of series def numberSequence(n) :
# calculates the N-th term
num = pow ( 4 , n) - pow ( 2 , n) - 1
return num
# Driver Code if __name__ = = "__main__" :
n = 4
print (numberSequence(n))
# This code is contributed by ANKITRAI1 |
// C# program to find the N-th // term in 1, 11, 55, 239, 991, .... using System;
class GFG
{ // Function to find the N-th term static int numberSequence( int n)
{ // calculates the N-th term
int num = ( int )(Math.Pow(4, n) -
Math.Pow(2, n)) - 1;
return num;
} // Driver Code public static void Main()
{ int n = 4;
Console.WriteLine(numberSequence(n));
} } // This code is contributed // by chandan_jnu. |
<?php // PHP program to find the N-th term // in 1, 11, 55, 239, 991, .... // Function to find the N-th term function numberSequence( $n )
{ // calculates the N-th term
$num = pow(4, $n ) -
pow(2, $n ) - 1;
return $num ;
} // Driver Code $n = 4;
echo numberSequence( $n );
// This code is contributed by mits ?> |
<script> // Javascript program to find the N-th term // in 1, 11, 55, 239, 991, .... // Function to find the N-th term function numberSequence(n)
{ // calculates the N-th term
let num = Math.pow(4, n) - Math.pow(2, n) - 1;
return num;
} // Driver Code let n = 4; document.write(numberSequence(n)); </script> |
239
Time Complexity: O(logN), as we are using pow function which will cost logN time.
Auxiliary Space: O(1), as we are not using any extra space.
Approach-3:
As we can see the pattern in approach 1, here also we use that pattern to calculate N-th term. But instead of string to store, we use bitwise operator(“<<” and “|”) and built-in pow() function to calculate N-th term of the sequence.
Below is the implementation of the above approach:
// C++ program to find the N-th term // in 1, 11, 55, 239, 991, .... #include <bits/stdc++.h> using namespace std;
// Find N-th number in sequence int numberSequence( int n)
{ // base case
if (n == 1)
return 1;
// value after 0
int q = pow (2, n) - 1;
// value before 0
int p = pow (2, (n - 1)) - 1;
// calculate N-th term using shifting and OR operation
p = p << (n + 1);
p = p | q;
return p;
} // Driver Code int main()
{ int n = 4;
cout << numberSequence(n);
return 0;
} // This code is contributed by Susobhan Akhuli |
// Java program to find the N-th term // in 1, 11, 55, 239, 991, .... import java.math.BigInteger;
class GFG {
public static void main(String[] args)
{
int n = 4 ;
System.out.println(numberSequence(n));
}
public static int numberSequence( int n)
{
if (n == 1 ) {
return 1 ;
}
int q = ( int )Math.pow( 2 , n) - 1 ;
int p = ( int )Math.pow( 2 , n - 1 ) - 1 ;
p = p << (n + 1 );
p = p | q;
return p;
}
} // This code is contributed by Susobhan Akhuli |
# Python program to find the N-th term # in 1, 11, 55, 239, 991, .... import math
def numberSequence(n: int ) - > int :
# base case
if n = = 1 :
return 1
# value after 0
q = pow ( 2 , n) - 1
# value before 0
p = pow ( 2 , (n - 1 )) - 1
# calculate N-th term using shifting and OR operation
p = p << (n + 1 )
p = p | q
return p
# Driver Code n = 4
print (numberSequence(n))
# This code is contributed by Susobhan Akhuli |
// C# program to find the N-th term // in 1, 11, 55, 239, 991, .... using System;
class Program {
// Find N-th number in sequence
static int numberSequence( int n)
{
// base case
if (n == 1)
return 1;
// value after 0
int q = ( int )Math.Pow(2, n) - 1;
// value before 0
int p = ( int )Math.Pow(2, (n - 1)) - 1;
// calculate N-th term using shifting and OR
// operation
p = p << (n + 1);
p = p | q;
return p;
}
// Driver code
static void Main( string [] args)
{
int n = 4;
Console.WriteLine(numberSequence(n));
}
} // This code is contributed by Susobhan Akhuli |
// Find N-th number in sequence function numberSequence(n) {
// base case
if (n === 1) {
return 1;
}
// value after 0
let q = Math.pow(2, n) - 1;
// value before 0
let p = Math.pow(2, n - 1) - 1;
// calculate N-th term using shifting and OR operation
p = p << (n + 1);
p = p | q;
return p;
} // Driver Code let n = 4; console.log(numberSequence(n)); |
239
Time Complexity: O(logN) [For pow function]
Auxiliary Space: O(1)
Approach-4:
As we can see the pattern in approach 2, here do the same but instead of using pow() function, here we use the math.log2() in combination with the operator “**” to calculate N-th term of the sequence.
Below is the implementation of the above approach:
// CPP program to find N-th term // in 1, 11, 55, 239, 991, .... #include <cmath> #include <iostream> using namespace std;
// calculates Nth term of series int numberSequence( int n)
{ // calculates the N-th term
int num = pow (2, n * ( int )(log2(4)))
- pow (2, n * ( int )(log2(2))) - 1;
return num;
} // Driver Code int main()
{ int n = 4;
cout << numberSequence(n) << endl;
return 0;
} // This code is contributed by Susobhan Akhuli |
// Java program to find N-th term // in 1, 11, 55, 239, 991, .... import java.lang.Math;
public class GFG {
// calculates Nth term of series
public static int numberSequence( int n)
{
// calculates the N-th term
int num
= ( int )Math.pow(
2 , n * ( int )(Math.log( 4 ) / Math.log( 2 )))
- ( int )Math.pow(
2 , n * ( int )(Math.log( 2 ) / Math.log( 2 )))
- 1 ;
return num;
}
public static void main(String[] args)
{
int n = 4 ;
System.out.println(numberSequence(n));
}
} // This code is contributed by Susobhan Akhuli |
# Python 3 program to find N-th term # in 1, 11, 55, 239, 991, .... import math
# calculate Nth term of series def numberSequence(n):
# calculates the N-th term
num = 2 * * (n * int (math.log2( 4 ))) - 2 * * (n * int (math.log2( 2 ))) - 1
return num
# Driver Code if __name__ = = "__main__" :
n = 4
print (numberSequence(n))
# This code is contributed by Susobhan Akhuli |
// C# program to find N-th term // in 1, 11, 55, 239, 991, .... using System;
class GFG {
// calculates Nth term of series
static int NumberSequence( int n)
{
// calculates the N-th term
int num
= ( int )(Math.Pow(2, n * ( int )(Math.Log(4, 2))))
- ( int )(Math.Pow(2,
n * ( int )(Math.Log(2, 2))))
- 1;
return num;
}
// Driver Code
static void Main( string [] args)
{
int n = 4;
Console.WriteLine(NumberSequence(n));
}
} // This code is contributed by Susobhan Akhuli |
// calculate Nth term of series function numberSequence(n) {
// calculates the N-th term let num = Math.pow(2, n * Math.log2(4)) - Math.pow(2, n * Math.log2(2)) - 1; return num;
} // Driver Code const n = 4; console.log(numberSequence(n)); |
239
Time Complexity: O(Log(exponent))
Auxiliary Space: O(1)