Welcome to Subscribe On Youtube

625. Minimum Factorization

Description

Given a positive integer num, return the smallest positive integer x whose multiplication of each digit equals num. If there is no answer or the answer is not fit in 32-bit signed integer, return 0.

 

Example 1:

Input: num = 48
Output: 68

Example 2:

Input: num = 15
Output: 35

 

Constraints:

  • 1 <= num <= 231 - 1

Solutions

  • class Solution {
        public int smallestFactorization(int num) {
            if (num < 2) {
                return num;
            }
            long ans = 0, mul = 1;
            for (int i = 9; i >= 2; --i) {
                if (num % i == 0) {
                    while (num % i == 0) {
                        num /= i;
                        ans = mul * i + ans;
                        mul *= 10;
                    }
                }
            }
            return num < 2 && ans <= Integer.MAX_VALUE ? (int) ans : 0;
        }
    }
    
  • class Solution {
    public:
        int smallestFactorization(int num) {
            if (num < 2) {
                return num;
            }
            long long ans = 0, mul = 1;
            for (int i = 9; i >= 2; --i) {
                if (num % i == 0) {
                    while (num % i == 0) {
                        num /= i;
                        ans = mul * i + ans;
                        mul *= 10;
                    }
                }
            }
            return num < 2 && ans <= INT_MAX ? ans : 0;
        }
    };
    
  • class Solution:
        def smallestFactorization(self, num: int) -> int:
            if num < 2:
                return num
            ans, mul = 0, 1
            for i in range(9, 1, -1):
                while num % i == 0:
                    num //= i
                    ans = mul * i + ans
                    mul *= 10
            return ans if num < 2 and ans <= 2**31 - 1 else 0
    
    
  • func smallestFactorization(num int) int {
    	if num < 2 {
    		return num
    	}
    	ans, mul := 0, 1
    	for i := 9; i >= 2; i-- {
    		if num%i == 0 {
    			for num%i == 0 {
    				num /= i
    				ans = mul*i + ans
    				mul *= 10
    			}
    		}
    	}
    	if num < 2 && ans <= math.MaxInt32 {
    		return ans
    	}
    	return 0
    }
    

All Problems

All Solutions