题目:给你一个整数n,求一个数m,使得m的每个位数的乘积是n,求最小的m。
分析:贪心。直接从9到2枚举所有的因数,统计即可。如果还有大于9的素数这输出-1。
说明:今天Timus发邮件,说我的这个题目,在那边的解错了╮(╯▽╰)╭。
#include <iostream>
#include <cstdlib>
#include <cstdio>
using namespace std;
int save[10];
int main()
{
int n,m,now;
while ( cin >> n )
while ( n -- ) {
cin >> m;
if ( m == 1 ) {
printf("1\n");
continue;
}
for ( int i = 9 ; i > 1 ; -- i )
save[i] = 0;
for ( int i = 9 ; i > 1 ; -- i )
while ( m%i == 0 ) {
save[i] ++;
m /= i;
}
if ( m > 1 ) {
printf("-1\n");
continue;
}else {
for ( int i = 2 ; i < 10 ; ++ i )
while ( save[i] -- > 0 )
printf("%d",i);
printf("\n");
}
}
return 0;
}