题目大意:将一个数通过因式分解变成另一个由因子组成的最小的数。
解题思路:因为要组成数,所以因子只需要从 2 - 9,又因为需要最小的数,所以因式分解从最大的因子开始,这样位数最少,最后输出从最小的因子输出,保证最小。1的话需要特判,因为所有的数都有因子1.
代码:
#include <stdio.h> #include <string.h> const int N = 10; int c[N]; int n; bool factor() { memset (c, 0, sizeof (c)); for (int i = N - 1; i >= 2; i--) { if (n == 1) return true; while (n % i == 0) { c[i]++; n /= i; } } if (n == 1) return true; return false; } int main () { int t; int c6; scanf ("%d", &t); while (t--) { scanf ("%d", &n); if (n != 1) { if (!factor()) printf ("-1\n"); else { for (int i = 2; i < 10 ; i++) for (int j = 0; j < c[i]; j++) printf ("%d", i); printf ("\n"); } } else printf ("1\n"); } return 0; }
993 - Product of digits,布布扣,bubuko.com
原文地址:http://blog.csdn.net/u012997373/article/details/36631015