zoukankan      html  css  js  c++  java
  • 625. Minimum Factorization

    Problem statement

    Given a positive integer a, find the smallest positive integer b whose multiplication of each digit equals to a.

    If there is no answer or the answer is not fit in 32-bit signed integer, then return 0.

    Example 1
    Input:

    48 

    Output:

    68

    Example 2
    Input:

    15

    Output:

    35

    Solution

    This is the third problem for weekly contest 37. Initially, I thought it is a DFS problem. Actually, it is much easier. Although it is tagged with recursion in leetcode, I prefer it is a pure math.

    Since the input number should only contains the factors which are less than 10. We loop from 9 to 2, to divide the input number, until it is not divisible by any number in [2, 9].

    Suppose the input number is a, general idea is as following:

    • Loop i from 9 to 2.
    • In each loop, if a is divisible by i, update the min factorization value and a. Goes to next loop until a is not divisible by i
    • After exiting the loop,
      1. if a < 2, means all it`s factors are single digit number, return the value(if it is in the range),
      2. Otherwise, it means there is at least one factor, that is greater than 9, return 0. 

    Time complexity is O(8loga), space complexity is O(1).

    class Solution {
    public:
        int smallestFactorization(int a) {
            if(a < 2){
                return a;
            }
            long min_factorization = 0;
            long mul = 1;
            for(int i = 9; i >= 2; i--){
                while(a % i == 0){
                    min_factorization += mul * i;
                    mul *= 10;
                    a /= i;
                }
            }
            return (a < 2 && min_factorization < INT_MAX) ? min_factorization : 0;
        }
    };
  • 相关阅读:
    责任链模式(Chain of Responsibility)
    模板模式(Template Method)
    组合模式(Composite Pattern)
    原型模式(Prototype Pattern)
    策略模式(Strategy Pattern)
    状态模式(State Pattern)
    增删改查
    安卓sql
    安卓第三次作业
    安卓第四周作业
  • 原文地址:https://www.cnblogs.com/wdw828/p/7058217.html
Copyright © 2011-2022 走看看