UVA 993Product of digits 数字之积 贪心水题

来源:互联网 发布:java collection sort 编辑:程序博客网 时间:2024/05/16 03:19

题意:求出一个数,各个位数上相乘的积等于所给的数。

枚举2-9,如果找到一个数能整除那个数就枚举下一位,递归即可。

代码:

 /* *   Author:        illuz <iilluzen[at]gmail.com> *   Blog:          http://blog.csdn.net/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;}


原创粉丝点击