Find the n-th number made of even digits only
Last Updated :
27 Feb, 2023
Given a number n, find out the n-th positive number made up of even digits (0, 2, 4, 6, 8) only. First few numbers made of even digits are 0, 2, 4, 6, 8, 20, 22, 24…….
Examples :
Input : 2
Output : 2
Second number made of 0, 2, 4, 6, 8 is 2
Input : 10
Output : 28
Naive Approach
A naive approach is to start from 0 and checking if it is made of only {0, 2, 4, 6, 8} and stop when you find n-th such number.
C++
#include<bits/stdc++.h>
using namespace std;
int findNthEvenDigitNumber( int n )
{
int count = 0;
for ( int i = 0 ; ; i++)
{
int curr = i;
bool isCurrEvenDigit = true ;
while (curr != 0)
{
if (curr % 10 == 1 || curr % 10 == 3 ||
curr % 10 == 5 || curr % 10 == 7 ||
curr % 10 == 9)
isCurrEvenDigit = false ;
curr = curr / 10;
}
if (isCurrEvenDigit == true )
count++;
if (count == n)
return i;
}
}
int main()
{
cout << findNthEvenDigitNumber(2)
<< endl;
cout << findNthEvenDigitNumber(10)
<< endl;
return 0;
}
|
Java
class GFG
{
static int findNthEvenDigitNumber( int n )
{
int count = 0 ;
for ( int i = 0 ; ; i++)
{
int curr = i;
boolean isCurrEvenDigit = true ;
while (curr != 0 )
{
if (curr % 10 == 1 || curr % 10 == 3 ||
curr % 10 == 5 || curr % 10 == 7 ||
curr % 10 == 9 )
isCurrEvenDigit = false ;
curr = curr / 10 ;
}
if (isCurrEvenDigit == true )
count++;
if (count == n)
return i;
}
}
public static void main (String[] args)
{
System.out.println(findNthEvenDigitNumber( 2 ));
System.out.println(findNthEvenDigitNumber( 10 ));
}
}
|
Python3
def findNthEvenDigitNumber(n):
count = 0 ;
i = 0 ;
while ( True ):
curr = i;
isCurrEvenDigit = True ;
while (curr ! = 0 ):
if (curr % 10 = = 1 or curr % 10 = = 3 or
curr % 10 = = 5 or curr % 10 = = 7 or
curr % 10 = = 9 ):
isCurrEvenDigit = False ;
curr = curr / / 10 ;
if (isCurrEvenDigit = = True ):
count + = 1 ;
if (count = = n):
return i;
i + = 1 ;
print (findNthEvenDigitNumber( 2 ));
print (findNthEvenDigitNumber( 10 ));
|
C#
using System;
class GFG
{
static int findNthEvenDigitNumber( int n )
{
int count = 0;
for ( int i = 0 ; ; i++)
{
int curr = i;
bool isCurrEvenDigit = true ;
while (curr != 0)
{
if (curr % 10 == 1 || curr % 10 == 3 ||
curr % 10 == 5 || curr % 10 == 7 ||
curr % 10 == 9 )
isCurrEvenDigit = false ;
curr = curr / 10;
}
if (isCurrEvenDigit == true )
count++;
if (count == n)
return i;
}
}
public static void Main ()
{
Console.WriteLine(findNthEvenDigitNumber(2));
Console.WriteLine(findNthEvenDigitNumber(10));
}
}
|
PHP
<?php
function findNthEvenDigitNumber( $n )
{
$count = 0;
for ( $i = 0 ; ; $i ++)
{
$curr = $i ;
$isCurrEvenDigit = true ;
while ( $curr != 0)
{
if ( $curr % 10 == 1 || $curr % 10 == 3 ||
$curr % 10 == 5 || $curr % 10 == 7 ||
$curr % 10 == 9)
$isCurrEvenDigit = false;
$curr = $curr / 10;
}
if ( $isCurrEvenDigit == true)
$count ++;
if ( $count == $n )
return $i ;
}
}
echo findNthEvenDigitNumber(2), "\n" ;
echo findNthEvenDigitNumber(10) ;
?>
|
Javascript
<script>
function findNthEvenDigitNumber(n)
{
let count = 0;
for (let i = 0;; i++)
{
let curr = i;
let isCurrEvenDigit = true ;
while (curr != 0)
{
if (curr % 10 == 1 || curr % 10 == 3 ||
curr % 10 == 5 || curr % 10 == 7 ||
curr % 10 == 9)
isCurrEvenDigit = false ;
curr = Math.floor(curr / 10);
}
if (isCurrEvenDigit === true )
count++;
if (count === n)
return i;
}
}
document.write(findNthEvenDigitNumber(2) + "<br>" );
document.write(findNthEvenDigitNumber(10) + "<br>" );
</script>
|
Output :
2
28
Time Complexity: O(n * log10n), where n represents the given integer.
Auxiliary Space: O(1), no extra space is required, so it is a constant.
Efficient Approach
We need to find numbers made of 5 digits, 0, 2, 4, 6 and 8. When we convert a number into base 5 number, it will only be made of numbers {0, 1, 2, 3, 4}. It can be clearly seen that each digit in the required digit set {0, 2, 4, 6, 8} is double the digit in the corresponding index of the base-5 digit set. So to find the n-th number made of only even digits follow the below mentioned steps
Step 1: Convert n to n-1 this is done so as to exclude zero.
Step 2: Convert n to 5 base decimal number.
Step 3: Multiply the above found number by 2. This is the required number
C++
#include<bits/stdc++.h>
using namespace std;
int findNthEvenDigitNumber( int n)
{
if (n == 1)
return 0;
vector< int > v;
n = n - 1;
while (n > 0)
{
v.push_back(n % 5);
n = n / 5;
}
int result = 0;
for ( int i = v.size() - 1; i >= 0; i--)
{
result = result * 10;
result = result + v[i];
}
return 2*result;
}
int main()
{
cout << findNthEvenDigitNumber(2)
<< endl;
cout << findNthEvenDigitNumber(10)
<< endl;
return 0;
}
|
Java
import java.util.*;
class GFG {
static int findNthEvenDigitNumber( int n) {
if (n == 1 ) {
return 0 ;
}
Vector< Integer> v = new Vector<>();
n = n - 1 ;
while (n > 0 ) {
v.add(n % 5 );
n = n / 5 ;
}
int result = 0 ;
for ( int i = v.size() - 1 ; i >= 0 ; i--) {
result = result * 10 ;
result = result + v.get(i);
}
return 2 * result;
}
public static void main(String[] args) {
System.out.println(findNthEvenDigitNumber( 2 ));
System.out.println(findNthEvenDigitNumber( 10 ));
}
}
|
Python3
def findNthEvenDigitNumber( n):
if (n = = 1 ):
return 0
v = []
n = n - 1
while (n > 0 ):
v.append(n % 5 )
n = n / / 5
result = 0
for i in range ( len (v) - 1 , - 1 , - 1 ):
result = result * 10
result = result + v[i]
return 2 * result
if __name__ = = "__main__" :
print (findNthEvenDigitNumber( 2 ))
print (findNthEvenDigitNumber( 10 ))
|
C#
using System;
using System.Collections;
class GFG {
static int findNthEvenDigitNumber( int n)
{
if (n == 1)
{
return 0;
}
ArrayList v = new ArrayList();
n = n - 1;
while (n > 0)
{
v.Add(n % 5);
n = n / 5;
}
int result = 0;
for ( int i = v.Count - 1; i >= 0; i--)
{
result = result * 10;
result = result + ( int )v[i];
}
return 2 * result;
}
public static void Main()
{
Console.WriteLine(findNthEvenDigitNumber(2));
Console.WriteLine(findNthEvenDigitNumber(10));
}
}
|
PHP
<?php
function findNthEvenDigitNumber( $n )
{
if ( $n == 1)
return 0;
$v = array ();
$n = $n - 1;
while ( $n > 0)
{
array_push ( $v , $n % 5);
$n = (int)( $n / 5);
}
$result = 0;
for ( $i = count ( $v ) - 1; $i >= 0; $i --)
{
$result = $result * 10;
$result = $result + $v [ $i ];
}
return 2 * $result ;
}
echo findNthEvenDigitNumber(2) . "\n" ;
echo findNthEvenDigitNumber(10) . "\n"
?>
|
Javascript
<script>
function findNthEvenDigitNumber(n)
{
if (n == 1) {
return 0;
}
let v = [];
n = n - 1;
while (n > 0) {
v.push(n % 5);
n = Math.floor(n / 5);
}
let result = 0;
for (let i = v.length - 1; i >= 0; i--) {
result = result * 10;
result = result + v[i];
}
return 2 * result;
}
document.write(findNthEvenDigitNumber(2)+ "<br>" );
document.write(findNthEvenDigitNumber(10));
</script>
|
Output :
2
28
Time Complexity : O(log5(n)), where n is the given integer.
Auxiliary Space: O(log5(n)), where n is the given integer.
This article is contributed by Ayush Jha.
Like Article
Suggest improvement
Share your thoughts in the comments
Please Login to comment...