Find n-th element in a series with only 2 digits (4 and 7) allowed

Consider a series of numbers composed of only digits 4 and 7. First few numbers in the series are 4, 7, 44, 47, 74, 44744,.. etc. Given a number n, we need to find n-th number in the series.

Examples:

Input : n = 2
Output : 7

Input : n = 3
Output : 44

Input  : n = 5
Output : 74

Input  : n = 6
Output : 77



The idea is based on the fact that the value of last digit alternates in series. For example, if last digit of i-th number is 4, then last digit of (i-1)-th and (i+1)-th numbers must be 7.

We create an array of size (n+1) and push 4 and 7 (These two are always first two elements of series) to it. For more elements we check
1) If i is odd,
      arr[i] = arr[i/2]*10 + 4;
2) If it is even,
      arr[i] = arr[(i/2)-1]*10 + 7;
At last return arr[n].

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

// C++ program to find n-th number in a series
// made of digits 4 and 7
#include <bits/stdc++.h>
using namespace std;
  
// Return n-th number in series made of 4 and 7
int printNthElement(int n)
{
    // create an array of size (n+1)
    int arr[n+1];
    arr[1] = 4;
    arr[2] = 7;
  
    for (int i=3; i<=n; i++)
    {
        // If i is odd
        if (i%2 != 0)
            arr[i] = arr[i/2]*10 + 4;
        else
            arr[i] = arr[(i/2)-1]*10 + 7;
    }
    return arr[n];
}
  
// Driver code
int main()
{
    int n = 6;
    cout << printNthElement(n);
    return 0;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java program to find n-th number in a series
// made of digits 4 and 7
  
class FindNth
{
    // Return n-th number in series made of 4 and 7
    static int printNthElement(int n)
    {
        // create an array of size (n+1)
        int arr[] = new int[n+1];
        arr[1] = 4;
        arr[2] = 7;
       
        for (int i=3; i<=n; i++)
        {
            // If i is odd
            if (i%2 != 0)
                arr[i] = arr[i/2]*10 + 4;
            else
                arr[i] = arr[(i/2)-1]*10 + 7;
        }
        return arr[n];
    }    
      
    // main function
    public static void main (String[] args) 
    {
        int n = 6;
        System.out.println(printNthElement(n));
    }
}

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python3 program to find n-th number 
# in a series made of digits 4 and 7
  
# Return n-th number in series made 
# of 4 and 7
def printNthElement(n) :
      
    # create an array of size (n + 1)
    arr =[0] * (n + 1);
    arr[1] = 4
    arr[2] = 7
  
    for i in range(3, n + 1) :
        # If i is odd
        if (i % 2 != 0) :
            arr[i] = arr[i // 2] * 10 + 4
        else :
            arr[i] = arr[(i // 2) - 1] * 10 + 7
      
    return arr[n]
      
# Driver code
n = 6
print(printNthElement(n))
  
# This code is contributed by Nikita Tiwari.

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# program to find n-th number in a series
// made of digits 4 and 7
using System;
  
class GFG
{
    // Return n-th number in series made of 4 and 7
    static int printNthElement(int n)
    {
        // create an array of size (n+1)
        int []arr = new int[n+1];
        arr[1] = 4;
        arr[2] = 7;
      
        for (int i = 3; i <= n; i++)
        {
            // If i is odd
            if (i % 2 != 0)
                arr[i] = arr[i / 2] * 10 + 4;
            else
                arr[i] = arr[(i / 2) - 1] * 10 + 7;
        }
        return arr[n];
    
      
    // Driver code
    public static void Main () 
    {
        int n = 6;
        Console.Write(printNthElement(n));
    }
}
  
// This code is contributed by vt_m.

chevron_right


PHP

filter_none

edit
close

play_arrow

link
brightness_4
code

<?php
// PHP program to find n-th 
// number in a series
// made of digits 4 and 7
  
// Return n-th number in 
// series made of 4 and 7
function printNthElement($n)
{
      
    // create an array 
    // of size (n+1)
    $arr[1] = 4;
    $arr[2] = 7;
  
    for ($i = 3; $i <= $n; $i++)
    {
          
        // If i is odd
        if ($i % 2 != 0)
            $arr[$i] = $arr[$i / 2] * 
                               10 + 4;
        else
            $arr[$i] = $arr[($i / 2) - 1] * 
                                    10 + 7;
    }
    return $arr[$n];
}
  
// Driver code
$n = 6;
echo(printNthElement($n));
  
// This code is contributed by Ajit.
?>

chevron_right



Output:

77

Find n-th element in a series with only 2 digits (4 and 7) allowed | Set 2 (log(n) method)

This article is contributed by Roshni Agarwal. 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 write comments if you find anything incorrect, or you want to share more information about the topic discussed above.



My Personal Notes arrow_drop_up

Improved By : jit_t