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++ program to find n-th number containing // only 3 and 5. #include <bits/stdc++.h> 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 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 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# 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 // PHP program to find n-th number // containing only 3 and 5. function findNthNo( $n )
{ $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.
$res = strrev ( $res );
return $res ;
} // Driver code $n = 5;
echo findNthNo( $n );
// This code is contributed // by ChitraNayal ?> |
<script> // Javascript program to find n-th number // containing only 3 and 5. function reverseString(str) {
return str.split( "" ).reverse().join( "" );
} function findNthNo( n) {
let 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.
sb = (res);
sb =reverseString(sb);
return (sb);
}
// Driver code
let n = 5;
document.write(findNthNo(n));
// This code contributed by Princi Singh </script> |
53
Time Complexity: O(log n)
Auxiliary Space: O(1)