描述
給定一個正整數 a,找出最小的正整數 b 使得 b 的所有數位相乘恰好等於 a。
如果不存在這樣的結果或者結果不是 32 位有符號整數,返回 0。
樣例 1
輸入:
48
輸出:
68
樣例 2
輸入:
15
輸出:
35
思路
從最小的數開始遍歷,判斷每位數相乘是否等於啊,時間復雜度不符合要求。
從大到小開始找因數,首先查找9是否是因數,是要能整除a,就是其因數,接着找第二個因數。
class Solution {
public:
int smallestFactorization(int a) {
if(a<10){
return a;
}
long long b=0,count=1;
for(int i=9;i>=2;i--){
while(a%i==0){
b+=count*i;
if(b>INT_MAX){
return 0;
}
a/=i;
count*=10;
}
}
return a==1?b:0;
}
};