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 }