题目:给你一个整数n,求一个数m,使得m的每个位数的乘积是n,求最小的m。
从9开始除(位数越少越小),知道除不尽或者完全除完
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<string>
using namespace std;
int arr[1005];
int main() {
int kase, i;
int n;
scanf("%d", &kase);
while(kase--) {
memset(arr, 0, sizeof(arr));
scanf("%d", &n);
int f=0;
if(n == 1) {
printf("1\n");
continue;
}
for(i=9; i>=2; i--) {
while(n%i==0 && n && n!=1) {
n /= i;
arr[f] = i;
f++;
}
if(n==1 || n==0) break;
}
if(n>1) printf("-1\n");
else {
sort(arr,arr+f);
for(i=0; i<f; i++) printf("%d",arr[i]);
printf("\n");
}
}
return 0;
}