1 /*数的分解
 2 时间限制:1000 ms  |  内存限制:65535 KB 
 3 难度:1
 4 描述 
 5 你的任务是找到一个最小的正整数Q,使Q的各位数的乘积等于N。
 6 
 7 输入
 8 最多450组测试数据。数据以EOF结尾。
 9 输入一个整数N(0 ≤ N ≤ 400)。
10 输出
11 输出Q,如果Q不存在则输出?1。
12 样例输入
13 10
14 5样例输出
15 25
16 5来源
17 ural
18 上传者
19 李文鑫
20 
21 */
22 #include<stdio.h>
23 #include<stdlib.h>
24 int cmp(const void *a, const void *b )
25 {
26     return *(int *)a  - *(int *)b;
27 }
28 int main()
29 {
30     int n, a[10], i, j,  t, l=0;
31     while(scanf("%d", &n) != EOF)
32     {
33         l++;
34         if(l >= 451)break;
35         j=0;
36         if( n == 0)  {printf("10\n");  continue;}
37         if( n == 1)  {printf("1\n");  continue;}
38         for( i = 9; i >= 2; i--)
39         if( n % i == 0)
40             {
41                 a[j] = i;
42                 n /= i;
43                 i = 10;
44                 j++;
45             }
46         if(n > 1)
47             printf("-1\n");
48         else 
49             {
50             qsort( a, j, sizeof(a[0]), cmp);
51                 for( i = 0; i< j; i++)
52                 printf("%d", a[i]);
53                 printf("\n");
54             }
55     }
56     return 0;
57 }