# 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

Recommended Practice

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

 `// C++ program to find n-th number in a series``// made of digits 4 and 7``#include ``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;``}`

## Java

 `// 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));``    ``}``}`

## Python3

 `# 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.`

## C#

 `// 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.`

## PHP

 ``

## Javascript

 ``

Output:

`77`

Time Complexity: O(n) since using a for loop
Auxiliary Space: O(n) for creating an array of size N + 1.

Previous
Next