Related Articles

# Program to find the N-th term of series 3, 5, 33, 35, 53…. | Set-2

• Last Updated : 24 Mar, 2021

Given a series of numbers composed only of digits 3 and 5. The first few numbers in the series are:

3, 5, 33, 35, 53, 55, …..

Examples:

```Input: N = 2
Output: 5

Input: N = 5
Output: 53```

For O(n) solution, refer Program to find N-th term of series 3, 5, 33, 35, 53….. In this post, a O(log n) solution is discussed which is based on below pattern in numbers. The numbers can be seen.

```                 ""
/      \
3         5
/   \     /   \
33    35   53    55
/ \   / \   / \  / \```

The idea is to fill the required number from the end. We know can observe that the last digit is 3 if n is odd and the last digit is 5 if n is even. After filling the last digit, we move to the parent node in a tree. If n is odd, then the parent node corresponds to (n-1)/2. Else parent node corresponds to (n-2)/2.

## C++

 `// C++ program to find n-th number containing``// only 3 and 5.``#include ``using` `namespace` `std;` `string findNthNo(``int` `n)``{``    ``string res = ``""``;``    ``while` `(n >= 1) {``        ``// If n is odd, append 3 and``        ``// move to parent``        ``if` `(n & 1) {``            ``res = res + ``"3"``;``            ``n = (n - 1) / 2;``        ``}` `        ``// If n is even, append 5 and``        ``// move to parent``        ``else` `{``            ``res = res + ``"5"``;``            ``n = (n - 2) / 2;``        ``}``    ``}` `    ``// Reverse res and return.``    ``reverse(res.begin(), res.end());``    ``return` `res;``}` `// Driver code``int` `main()``{``    ``int` `n = 5;``    ``cout << findNthNo(n);``    ``return` `0;``}`

## Java

 `// java program to find n-th number``// containing only 3 and 5.``public` `class` `GFG {` `    ``static` `String findNthNo(``int` `n)``    ``{``        ``String res = ``""``;``        ``while` `(n >= ``1``) {` `            ``// If n is odd, append``            ``// 3 and move to parent``            ``if` `((n & ``1``) == ``1``) {``                ``res = res + ``"3"``;``                ``n = (n - ``1``) / ``2``;``            ``}` `            ``// If n is even, append``            ``// 5 and move to parent``            ``else` `{``                ``res = res + ``"5"``;``                ``n = (n - ``2``) / ``2``;``            ``}``        ``}` `        ``// Reverse res and return.``        ``StringBuilder sb = ``new` `StringBuilder(res);``        ``sb.reverse();``        ``return` `new` `String(sb);``    ``}` `    ``// Driver code``    ``public` `static` `void` `main(String args[])``    ``{``        ``int` `n = ``5``;` `        ``System.out.print(findNthNo(n));``    ``}``}`

## Python3

 `# Python3 program to find``# n-th number containing``# only 3 and 5.``def` `reverse(s):``    ``if` `len``(s) ``=``=` `0``:``        ``return` `s``    ``else``:``        ``return` `reverse(s[``1``:]) ``+` `s[``0``]``          ` `def` `findNthNo(n):``    ``res ``=` `"";``    ``while` `(n >``=` `1``):``          ` `        ``# If n is odd, append``        ``# 3 and move to parent``        ``if` `(n & ``1``):``            ``res ``=` `res ``+` `"3"``;``            ``n ``=` `(``int``)((n ``-` `1``) ``/` `2``);``              ` `            ``# If n is even, append 5``            ``# and move to parent``        ``else``:``            ``res ``=` `res ``+` `"5"``;``            ``n ``=` `(``int``)((n ``-` `2``) ``/` `2``);``              ` `    ``# Reverse res``    ``# and return.``    ``return` `reverse(res);``  ` `# Driver code``n ``=` `5``;``print``(findNthNo(n));`

## C#

 `// C# program to find n-th number``// containing only 3 and 5.``using` `System;` `class` `GFG``{``// function to reverse a string``public` `static` `string` `Reverse(``string` `s)``{``    ``char``[] charArray = s.ToCharArray();``    ``Array.Reverse(charArray);``    ``return` `new` `string``(charArray);``}` `// function to find nth number``static` `string` `findNthNo(``int` `n)``{``    ``string` `res = ``""``;``    ``while` `(n >= 1)``    ``{` `        ``// If n is odd, append``        ``// 3 and move to parent``        ``if` `((n & 1) == 1)``        ``{``            ``res = res + ``"3"``;``            ``n = (n - 1) / 2;``        ``}` `        ``// If n is even, append``        ``// 5 and move to parent``        ``else``        ``{``            ``res = res + ``"5"``;``            ``n = (n - 2) / 2;``        ``}``    ``}` `    ``string` `sb = Reverse(res) ;``    ``return` `sb ;``}` `// Driver code``static` `void` `Main()``{``    ``int` `n = 5;` `    ``Console.WriteLine(findNthNo(n));``}``}` `// This code is contributed by ANKITRAI1`

## PHP

 `= 1)``    ``{``        ``// If n is odd, append 3``        ``// and move to parent``        ``if` `(``\$n` `& 1)``        ``{``            ``\$res` `= ``\$res` `+ ``"3"``;``            ``\$n` `= (``\$n` `- 1) / 2;``        ``}` `        ``// If n is even, append 5``        ``// and move to parent``        ``else``        ``{``            ``\$res` `= ``\$res` `. ``"5"``;``            ``\$n` `= (``\$n` `- 2) / 2;``        ``}``    ``}` `    ``// Reverse res and return.``    ``\$res` `= ``strrev``(``\$res``);``    ``return` `\$res``;``}` `// Driver code``\$n` `= 5;``echo` `findNthNo(``\$n``);` `// This code is contributed``// by ChitraNayal``?>`

## Javascript

 ``
Output:
`53`

Attention reader! Don’t stop learning now. Get hold of all the important mathematical concepts for competitive programming with the Essential Maths for CP Course at a student-friendly price. To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

My Personal Notes arrow_drop_up