Number with even sum of digits

• Last Updated : 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++

 `// C++ program to find n-th``// Good number.``#include ``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.``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

 `= 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

 ``
Output:
`20`

Time Complexity: O(1)
Auxiliary Space: O(1)

My Personal Notes arrow_drop_up