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;
        }
    };
  • 相关阅读:
    Myeclipse 10.7 android(安卓) 开发环境搭建
    matplotlib
    tophat cufflinks cuffcompare cuffmerge 的使用
    shell 随机从文件中抽取若干行
    liftover的使用/用法
    命令行运行R语言脚本(代码)
    R: NULL, NA, and NaN
    SOME USEFUL MACHINE LEARNING LIBRARIES.
    Flutter实战:手把手教你写Flutter Plugin
    Flutter学习笔记(五)
  • 原文地址:https://www.cnblogs.com/wdw828/p/7058217.html
Copyright © 2011-2022 走看看