# Find maximum product of digits among numbers less than or equal to N

Given an integer **N > 0**, the task is to find the maximum product of digits among numbers less than or equal to **N**.

**Examples:**

Input:N = 390

Output:216

Maximum possible product is given by the number 389

3 * 8 * 9 = 216

Input:N = 432

Output:243

**Approach:** This problem can also be solved using the method described in this article taking lower limit as **1** and upper limit as **N**. Another method to solve this problem is by using recursion. The conditions for recursion are as follows:

- If
**N = 0**then return**1**. - If
**N < 10**then return**N**. - Otherwise, return
**max(maxProd(N / 10) * (N % 10), maxProd((N / 10) – 1) * 9**

At each step of recursion, either the last digit or 9 is taken to maximize the product of digit.

Below is the implementation of the above approach:

## C++

`// C++ implementation of the approach ` `#include <bits/stdc++.h> ` `using` `namespace` `std; ` ` ` `// Function that returns the maximum product of ` `// digits among numbers less than or equal to N ` `int` `maxProd(` `int` `N) ` `{ ` ` ` `if` `(N == 0) ` ` ` `return` `1; ` ` ` `if` `(N < 10) ` ` ` `return` `N; ` ` ` `return` `max(maxProd(N / 10) * (N % 10), ` ` ` `maxProd(N / 10 - 1) * 9); ` `} ` ` ` `// Driver code ` `int` `main() ` `{ ` ` ` `int` `N = 390; ` ` ` `cout << maxProd(N); ` ` ` ` ` `return` `0; ` `} ` |

*chevron_right*

*filter_none*

## Java

`// Java implementation of the approach ` `import` `java.io.*; ` ` ` `class` `GFG ` `{ ` ` ` `// Function that returns the maximum product of ` `// digits among numbers less than or equal to N ` `static` `int` `maxProd(` `int` `N) ` `{ ` ` ` `if` `(N == ` `0` `) ` ` ` `return` `1` `; ` ` ` `if` `(N < ` `10` `) ` ` ` `return` `N; ` ` ` `return` `Math.max(maxProd(N / ` `10` `) * (N % ` `10` `), ` ` ` `maxProd(N / ` `10` `- ` `1` `) * ` `9` `); ` `} ` ` ` `// Driver code ` `public` `static` `void` `main (String[] args) ` `{ ` ` ` `int` `N = ` `390` `; ` ` ` `System.out.println (maxProd(N)); ` `} ` `} ` ` ` `// This code is contributed by ajit. ` |

*chevron_right*

*filter_none*

## Python3

`# Python3 implementation of the approach ` ` ` `# Function that returns the maximum product of ` `# digits among numbers less than or equal to N ` `def` `maxProd(N): ` ` ` ` ` `if` `(N ` `=` `=` `0` `): ` ` ` `return` `1` ` ` `if` `(N < ` `10` `): ` ` ` `return` `N ` ` ` `return` `max` `(maxProd(N ` `/` `/` `10` `) ` `*` `(N ` `%` `10` `), ` ` ` `maxProd(N ` `/` `/` `10` `-` `1` `) ` `*` `9` `) ` ` ` `# Driver code ` `N ` `=` `390` `print` `(maxProd(N)) ` ` ` `# This code is contributed by mohit kumar ` |

*chevron_right*

*filter_none*

## C#

`// C# implementation of the approach ` `using` `System; ` ` ` `class` `GFG ` `{ ` ` ` `// Function that returns the maximum product of ` `// digits among numbers less than or equal to N ` `static` `int` `maxProd(` `int` `N) ` `{ ` ` ` `if` `(N == 0) ` ` ` `return` `1; ` ` ` `if` `(N < 10) ` ` ` `return` `N; ` ` ` `return` `Math.Max(maxProd(N / 10) * (N % 10), ` ` ` `maxProd(N / 10 - 1) * 9); ` `} ` ` ` `// Driver code ` `static` `public` `void` `Main () ` `{ ` ` ` `int` `N = 390; ` ` ` `Console.WriteLine(maxProd(N)); ` `} ` `} ` ` ` `// This code is contributed by Tushil.. ` |

*chevron_right*

*filter_none*

## PHP

`<?php ` `// PHP implementation of the approach ` ` ` `// Function that returns the maximum product of ` `// digits among numbers less than or equal to N ` `function` `maxProd(` `$N` `) ` `{ ` ` ` `if` `(` `$N` `== 0) ` ` ` `return` `1; ` ` ` `if` `(` `$N` `< 10) ` ` ` `return` `$N` `; ` ` ` `return` `max(maxProd((int)(` `$N` `/ 10)) * (` `$N` `% 10), ` ` ` `maxProd((int)(` `$N` `/ 10) - 1) * 9); ` `} ` ` ` `// Driver code ` `$N` `= 390; ` `echo` `maxProd(` `$N` `); ` ` ` `// This code is contributed by Akanksha Rai ` `?> ` |

*chevron_right*

*filter_none*

**Output:**

216

GeeksforGeeks has prepared a complete interview preparation course with premium videos, theory, practice problems, TA support and many more features. Please refer Placement 100 for details

## Recommended Posts:

- Find the maximum sum of digits of the product of two numbers
- Find the number in a range having maximum product of the digits
- Find four factors of N with maximum product and sum equal to N | Set 3
- Find four factors of N with maximum product and sum equal to N
- Find four factors of N with maximum product and sum equal to N | Set-2
- Numbers with sum of digits equal to the sum of digits of its all prime factor
- Smallest number k such that the product of digits of k is equal to n
- Check if product of digits of a number at even and odd places is equal
- Number of digits in the product of two numbers
- Sort the numbers according to their product of digits
- Cumulative product of digits of all numbers in the given range
- Maximum of sum and product of digits until number is reduced to a single digit
- Count different numbers that can be generated such that there digits sum is equal to 'n'
- Count of numbers whose sum of increasing powers of digits is equal to the number itself
- Find the first N integers such that the sum of their digits is equal to 10

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.