URAL 1014 Product of Digits

給定一個整數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;
}


發佈了144 篇原創文章 · 獲贊 7 · 訪問量 13萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章