Fixed compiling error in java programA positive integer is considered a good number if sum of its digits is even. Find n-th smallest good number.
Examples :
Input : n = 1 Output : 2 First good number is smallest positive number with sum of digits even which is 2. Input : n = 10 Output : 20
A simple solution is to start from 1 and traverse through all-natural numbers. For every number x, check if sum of digits is even. If even increment count of good numbers. Finally, return the n-th Good number.
An efficient solution is based on a pattern in the answer. Let us list down first 20 good numbers. The first 20 good numbers are: 2, 4, 6, 8, 11, 13, 15, 17, 19, 20, 22, 24, 26, 28, 31, 33, 35, 37, 39, 40. Observe that if last digit of n is from 0 to 4 the answer is 2*n and if last digit of n is from 5 to 9 the answer is 2*n + 1.
Steps to solve this problem:
1. Declare a variable lastdig=n%10.
2. Check if lastdig is greater than zero and smaller than 4 than return n<<1.
3. Else return (n<<1)+1.
C++
// C++ program to find n-th // Good number. #include <bits/stdc++.h> using namespace std; // Function to find kth good number. long long int findKthGoodNo( long long int n) { // Find the last digit of n. int lastDig = n % 10; // If last digit is between // 0 to 4 then return 2 * n. if (lastDig >= 0 && lastDig <= 4) return n << 1; // If last digit is between // 5 to 9 then return 2*n + 1. else return (n << 1) + 1; } // Driver code int main() { long long int n = 10; cout << findKthGoodNo(n); return 0; } |
Java
// Java program to find n-th // Good number. import java.io.*; public class GFG { // Function to find kth good number. static int findKthGoodNo( int n) { // Find the last digit of n. int lastDig = n % 10 ; // If last digit is between // 0 to 4 then return 2*n. if (lastDig >= 0 && lastDig <= 4 ) return n << 1 ; // If last digit is between // 5 to 9 then return 2*n + 1. else return (n << 1 ) + 1 ; } // Driver code public static void main(String[] args) { int n = 10 ; System.out.println(findKthGoodNo(n)); } } // This code is contributed by // Smitha Dinesh Semwal |
Python 3
# Python 3 program to find # n-th Good number. # Function to find kth # good number. def findKthGoodNo(n): # Find the last digit of n. lastDig = n % 10 # If last digit is between # 0 to 4 then return 2 * n. if (lastDig > = 0 and lastDig < = 4 ) : return n << 1 # If last digit is between # 5 to 9 then return 2 * n + 1. else : return (n << 1 ) + 1 # Driver code n = 10 print (findKthGoodNo(n)) # This code is contributed by # Smitha Dinesh Semwal |
C#
// C# program to find n-th // Good number. using System; class GFG { // Function to find kth // good number public static int findKthGoodNo( int n) { // Find the last digit of n. int lastDig = n % 10; // If last digit is between // 0 to 4 then return 2*n. if (lastDig >= 0 && lastDig <= 4) return n << 1; // If last digit is between // 5 to 9 then return 2*n + 1. else return (n << 1) + 1; } // Driver code static public void Main ( string []args) { int n = 10; Console.WriteLine(findKthGoodNo(n)); } } // This code is contributed by Ajit. |
PHP
<?php // PHP program to find n-th // Good number. // Function to find kth // good number. function findKthGoodNo( $n ) { // Find the last digit of n. $lastDig = $n % 10; // If last digit is between // 0 to 4 then return 2*n. if ( $lastDig >= 0 && $lastDig <= 4) return $n << 1; // If last digit is between // 5 to 9 then return 2*n + 1. else return ( $n << 1) + 1; } // Driver code $n = 10; echo (findKthGoodNo( $n )); // This code is contributed by Ajit. ?> |
Javascript
<script> // JavaScript program to find n-th // Good number. // Function to find kth good number. function findKthGoodNo(n) { // Find the last digit of n. let lastDig = n % 10; // If last digit is between // 0 to 4 then return 2*n. if (lastDig >= 0 && lastDig <= 4) return n << 1; // If last digit is between // 5 to 9 then return 2*n + 1. else return (n << 1) + 1; } // Driver code let n = 10; document.write(findKthGoodNo(n)); // This code is contributed by souravghosh0416. </script> |
20
Time Complexity: O(1)
Auxiliary Space: O(1)
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!