Nth number made up of odd digits only
Given an integer N, the task is to find the Nth number made up of odd digits (1, 3, 5, 7, 9) only.
First few numbers made up of odd digits are 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 31, …
Examples:
Input: N = 7
Output: 13
1, 3, 5, 7, 9, 11, 13
13 is the 7th number in the series
Input: N = 10
Output: 19
Approach 1 (Simple) : Starting from 1, keep checking if the number is made up of only odd digits (1, 3, 5, 7, 9) and stop when nth such number is found.
Below is the implementation of the above approach:
C++
// C++ program to find nth number made up of odd digits only #include <bits/stdc++.h> using namespace std; // Function to return nth number made up of odd digits only int findNthOddDigitNumber( int n) { // Variable to keep track of how many // such elements have been found int count = 0; for ( int i = 1;; i++) { int num = i; bool isMadeOfOdd = true ; // Checking each digit of the number while (num != 0) { // If 0, 2, 4, 6 or 8 is found // then the number is not made up of odd digits if (num % 10 == 0 || num % 10 == 2 || num % 10 == 4 || num % 10 == 6 || num % 10 == 8) { isMadeOfOdd = false ; break ; } num = num / 10; } // If the number is made up of odd digits only if (isMadeOfOdd == true ) count++; // If it is the nth number if (count == n) return i; } } // Driver Code int main() { int n = 10; cout << findNthOddDigitNumber(n); return 0; } |
Java
// Java program to find nth number // made up of odd digits only import java.io.*; class GFG { // Function to return nth number made up of odd digits only static int findNthOddDigitNumber( int n) { // Variable to keep track of how many // such elements have been found int count = 0 ; for ( int i = 1 ;; i++) { int num = i; boolean isMadeOfOdd = true ; // Checking each digit of the number while (num != 0 ) { // If 0, 2, 4, 6 or 8 is found // then the number is not made up of odd digits if (num % 10 == 0 || num % 10 == 2 || num % 10 == 4 || num % 10 == 6 || num % 10 == 8 ) { isMadeOfOdd = false ; break ; } num = num / 10 ; } // If the number is made up of odd digits only if (isMadeOfOdd == true ) count++; // If it is the nth number if (count == n) return i; } } // Driver Code public static void main (String[] args) { int n = 10 ; System.out.println (findNthOddDigitNumber(n)); } //This code is contributed by ajit } |
Python3
# Python 3 program to find nth number # made up of odd digits only # Function to return nth number made # up of odd digits only def findNthOddDigitNumber(n) : # Variable to keep track of how many # such elements have been found count = 0 i = 1 while True : num = i isMadeOfOdd = True # Checking each digit of the number while num ! = 0 : # If 0, 2, 4, 6 or 8 is found # then the number is not made # up of odd digits if (num % 10 = = 0 or num % 10 = = 2 or num % 10 = = 4 or num % 10 = = 6 or num % 10 = = 8 ) : isMadeOfOdd = False break num / = 10 # If the number is made up of # odd digits only if isMadeOfOdd = = True : count + = 1 # If it is the nth number if count = = n : return i i + = 1 # Driver code if __name__ = = "__main__" : n = 10 # Function call print (findNthOddDigitNumber(n)) # This code is contributed by Ryuga |
C#
// C# program to find nth number // made up of odd digits only using System; class GFG { // Function to return nth number // made up of odd digits only static int findNthOddDigitNumber( int n) { // Variable to keep track of // how many such elements have // been found int count = 0; for ( int i = 1;; i++) { int num = i; bool isMadeOfOdd = true ; // Checking each digit // of the number while (num != 0) { // If 0, 2, 4, 6 or 8 is found // then the number is not made // up of odd digits if (num % 10 == 0 || num % 10 == 2 || num % 10 == 4 || num % 10 == 6 || num % 10 == 8) { isMadeOfOdd = false ; break ; } num = num / 10; } // If the number is made up of // odd digits only if (isMadeOfOdd == true ) count++; // If it is the nth number if (count == n) return i; } } // Driver Code static public void Main () { int n = 10; Console.WriteLine(findNthOddDigitNumber(n)); } } // This code is contributed // by Ajit Deshpal |
PHP
<?php // PHP program to find nth number // made up of odd digits only // Function to return nth number // made up of odd digits only function findNthOddDigitNumber( $n ) { // Variable to keep track of how many // such elements have been found $count = 0; $i = 1; while (true) { $num = $i ; $isMadeOfOdd = true; // Checking each digit of // the number while ( $num != 0) { // If 0, 2, 4, 6 or 8 is found // then the number is not made // up of odd digits if ( $num % 10 == 0 or $num % 10 == 2 or $num % 10 == 4 or $num % 10 == 6 or $num % 10 == 8) { $isMadeOfOdd = false; break ; } $num = (int)( $num / 10); } // If the number is made up of // odd digits only if ( $isMadeOfOdd == true) $count += 1; // If it is the nth number if ( $count == $n ) return $i ; $i += 1; } } // Driver code $n = 10; // Function call print (findNthOddDigitNumber( $n )); // This code is contributed by mits ?> |
19
Approach 2 (Queue Based): The idea is to generate all numbers (smaller than n) containing odd digits only. How to generate all numbers smaller than n with odd digits? We use queue for this. Initially we push ‘1’, ‘3’, ‘5’, ‘7’ and ‘9’ to the queue. Then we run a loop while count of processed elements is smaller than n. We pop an item one by one and for every popped item x, we generate next numbers x*10 + 1, x*10 + 3, x*10 + 5, x*10 + 7 and x*10 + 9. We enqueue these new numbers. Time complexity of this approach is O(n)
Please refer below post for implementation of this approach.
Count of Binary Digit numbers smaller than N
Recommended Posts:
- Find the n-th number made of even digits only
- Smallest multiple of a given number made of digits 0 and 9 only
- Finding n-th number made of prime digits (2, 3, 5 and 7) only
- Number of digits in the nth number made of given four digits
- Count of integers in a range which have even number of odd digits and odd number of even digits
- Check whether product of digits at even places is divisible by sum of digits at odd place of a number
- Maximize the given number by replacing a segment of digits with the alternate digits given
- Count of numbers between range having only non-zero digits whose sum of digits is N and number is divisible by M
- Find the Largest number with given number of digits and sum of digits
- Find smallest number with given number of digits and sum of digits
- Find the average of k digits from the beginning and l digits from the end of the given number
- Minimum number of digits to be removed so that no two consecutive digits are same
- Largest number divisible by 90 that can be made using 0 and 5
- Find position of the given number among the numbers made of 4 and 7
- Total number of different staircase that can made from N boxes
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 Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.