题意:求出一个数,各个位数上相乘的积等于所给的数。
枚举2-9,如果找到一个数能整除那个数就枚举下一位,递归即可。
代码:
/*
* Author: illuz <iilluzen[at]gmail.com>
* Blog: http://blog.youkuaiyun.com/hcbbt
* File: uva993.cpp
* Lauguage: C/C++
* Create Date: 2013-09-01 00:24:29
* Descripton: uva993, brute
*/
#include <cstdio>
#define rep(i, n) for (int i = 0; i < (n); i++)
const int MAXN = 100;
bool flag;
int t, n, a[20], cnt;
void solve(int d) {
if (flag) return;
if (!n) return;
n /= 10;
for (int i = 9; i >= 2 && !flag; i--) {
if (d % i == 0) {
solve(d / i);
a[cnt++] = i;
return;
}
}
flag = true;
}
int main() {
scanf("%d", &t);
while (t--) {
scanf("%d", &n);
if (n == 1) {
printf("1\n");
continue;
}
if (n == 0) {
printf("0\n");
continue;
}
flag = false;
cnt = 0;
solve(n);
if (!flag) rep(i, cnt) printf("%d", a[i]);
else printf("-1");
printf("\n");
}
return 0;
}