题目大意:
给出一个数字,找出最小的可以满足每个数乘积等于它的数。
思路:
从9到2的找,因为这样才可以保证尽可能的小,不断的求余。
代码:
#include <iostream>
using namespace std;
#include <stdio.h>
#include <cstring>
int main() {
int cases,N,Q,count1,a[10];
bool flag;
scanf("%d",&cases);
while(cases--) {
memset(a,0,sizeof(a));
flag = false;
scanf("%d",&N);
if(N ==0 ) {
printf("0\n");
continue;
}
if(N == 1) {
printf("1\n");
continue;
}
// count1 = 0;
for(int i = 9; i >= 2; i--) {
while(N%i == 0){
N /= i;
++a[i];
//flag = true;
// break;
}
}
if(N == 1) {
for(int i = 2; i < 10; i++)
for(int j = 0 ; j < a[i]; j++)
printf("%d",i);
}
else
printf("-1");
printf("\n");
}
return 0;
}