給定一個整數N,找出最小的正整數Q,使得Q的各位數的積等於N。
直接深搜
#include <iostream>
using namespace std;
#include <vector>
#include <algorithm>
int flag;
vector<int> result;
void dfs(int num) {
if (flag==1)
return;
if (num < 10) {
result.push_back(num);
flag=1;
return;
}
int i;
for (i=9;i>=2;i--) {
if (num % i==0) {
result.push_back(i);
dfs(num/i);
if (flag==1)
return;
result.pop_back();
}
}
}
int main() {
int n;
while (cin >> n) {
if (n==0)
cout << "10" << endl;
else {
flag = 0;
result.clear();
dfs(n);
sort(result.begin(), result.end());
if (flag==1) {
for (int i = 0; i < result.size(); i++)
cout << result[i];
}
else
cout << "-1";
cout << endl;
}
}
return 0;
}