625. Minimum Factorization

来源:互联网 发布:网络交易管理办法 问题 编辑:程序博客网 时间:2024/07/17 04:12

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


想法:分解时从较大的因子9-2,不断分解,直至等于1或者不可分。
class Solution {public:   vector<int> as;    int smallestFactorization(int a) {        if(a<10) return a;        bool r=factor(a);        if(r==false || as.size()>32)        return 0;        long ans=0;        for(int i=0;i<as.size();i++){            ans+=(long)pow(10,i)*as[i];        }        return ans>INT_MAX?0:ans;    }    bool factor(int a){               while(a>1){            int i;            for(i=9;i>1;i--){                if(a%i==0){                    a=a/i;                    as.push_back(i);                    break;                }            }            if(i==1){                return false;            }        }        return true;;    }};


原创粉丝点击