Number with even sum of digits - GeeksforGeeks

06 Apr, 2021
A 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.  
C++
Java
Python 3
C#
PHP
Javascript
// 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 codeint main(){    long long int n = 10;    cout << findKthGoodNo(n);    return 0;}
// Java program to find n-th// Good number.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 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 coden = 10print(findKthGoodNo(n)) # This code is contributed by# Smitha Dinesh Semwal
// 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 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.?>
<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) 
Smitha Dinesh Semwal
jit_t
souravghosh0416
number-digits
series
Mathematical
Mathematical
series
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Program to print prime numbers from 1 to N.
Modular multiplicative inverse
Fizz Buzz Implementation
Generate all permutation of a set in Python
How to check if a given point lies inside or outside a polygon?
Check if a number is Palindrome
Segment Tree | Set 1 (Sum of given range)
Merge two sorted arrays with O(1) extra space
Program to multiply two matrices
Singular Value Decomposition (SVD)