 GeeksforGeeks App
Open App Browser
Continue

# Kth largest N digit number divisible by M

Given three positive integers N, K, and M. The task is to find Kth largest N digit number divisible by M

Note: K will be such an integer that Kth largest N digit number divisible by M always exists.

Examples

Input: N = 2, K = 2, M = 2
Output: 96
Explanation: The 2nd largest 2 digit number divisible by 2 is 96.

Input: N = 9, K = 6, M = 4
Output: 999999976

Approach: The problem is maths-based. Given three numbers N, K, and M. It is required to find the Kth largest N digit number divisible by M. To get the largest N digit divisible by M, at first it is required to find the largest N digit number(say P), which is N times 9
Now the largest N digit number divisible by M is (P – (P%M)).
Therefore, subtract (K-1) times M from this value to get the Kth largest value of N digit number which is divisible by M.
Given below is the conditions and mathematical expression to get Kth largest N digit number divisible by M.

Let P be the largest N digit number
Then the largest N digit number divisible by M is: (P – (P % M))
Now the Kth largest N digit number divisible by M is: [(P – (P % M)) – ((K – 1) * M)]

Below is the code according to the above formula.

## C++

 `// C++ program for above approach``#include ``using` `namespace` `std;` `// Function to find Kth N``// digit number divisible by M``int` `findAnswer(``int` `N, ``int` `K, ``int` `M)``{``    ``int` `i;``    ``long` `long` `int` `r = 0;` `    ``// Loop to calculate the largest``    ``// N digit number.``    ``for` `(i = 1; i <= N; i++) {``        ``r = r * 10 + 9;``    ``}` `    ``// Kth largest N digit number``    ``// divisible by M.``    ``long` `long` `int` `u = r - (r % M)``        ``- M * (K - 1);` `    ``return` `u;``}` `// Driver Code``int` `main()``{``    ``int` `N = 9;``    ``int` `K = 6;``    ``int` `M = 4;` `    ``cout << findAnswer(N, K, M);``    ``return` `0;``}`

## Java

 `// Java program for above approach``import` `java.util.*;` `class` `GFG{` `  ``// Function to find Kth N``  ``// digit number divisible by M``  ``static` `int` `findAnswer(``int` `N, ``int` `K, ``int` `M)``  ``{``    ``int` `i;``    ``int` `r = ``0``;` `    ``// Loop to calculate the largest``    ``// N digit number.``    ``for` `(i = ``1``; i <= N; i++) {``      ``r = r * ``10` `+ ``9``;``    ``}` `    ``// Kth largest N digit number``    ``// divisible by M.``    ``int` `u = r - (r % M)``      ``- M * (K - ``1``);` `    ``return` `u;``  ``}` `  ``// Driver Code``  ``public` `static` `void` `main(String[] args)``  ``{``    ``int` `N = ``9``;``    ``int` `K = ``6``;``    ``int` `M = ``4``;` `    ``System.out.print(findAnswer(N, K, M));``  ``}``}` `// This code is contributed by 29AjayKumar`

## Python3

 `# Python code for the above approach` `# Function to find Kth N``# digit number divisible by M``def` `findAnswer(N, K, M):``    ``i ``=` `None``    ``r ``=` `0``;` `    ``# Loop to calculate the largest``    ``# N digit number.``    ``for` `i ``in` `range``(``1``, N ``+` `1``):``        ``r ``=` `r ``*` `10` `+` `9``;` `    ``# Kth largest N digit number``    ``# divisible by M.``    ``u ``=` `r ``-` `(r ``%` `M) ``-` `M ``*` `(K ``-` `1``);` `    ``return` `u;` `# Driver Code``N ``=` `9``;``K ``=` `6``;``M ``=` `4``;` `print``(findAnswer(N, K, M));` `# This code is contributed by Saurabh Jaiswal`

## C#

 `// C# program for above approach``using` `System;``class` `GFG``{` `  ``// Function to find Kth N``  ``// digit number divisible by M``  ``static` `int` `findAnswer(``int` `N, ``int` `K, ``int` `M)``  ``{``    ``long` `r = 0;` `    ``// Loop to calculate the largest``    ``// N digit number.``    ``for` `(``int` `i = 1; i <= N; i++) {``      ``r = r * 10 + 9;``    ``}` `    ``// Kth largest N digit number``    ``// divisible by M.``    ``long` `u = r - (r % M)``      ``- M * (K - 1);` `    ``return` `(``int``)u;``  ``}` `  ``// Driver Code``  ``public` `static` `void` `Main()``  ``{``    ``int` `N = 9;``    ``int` `K = 6;``    ``int` `M = 4;` `    ``Console.Write(findAnswer(N, K, M));``  ``}``}` `// This code is contributed by Samim Hossain Mondal.`

## Javascript

 ``

Output

`999999976`

Time Complexity: O(MaxDigit), Where maxDigit is the largest N digit number.
Auxiliary Space: O(1)

My Personal Notes arrow_drop_up