UVA

题意是找到一个最小的数,使得这个数的各位的乘积等于n,首先小于10的数肯定是他本身了。这里不得不

拜服knowledgetime大神,从9到2找到这8个数字作为n的因子可以出现几次,然后从小到大依次输出。

#include<cstdio>
#include<cstdlib>
#include<cstring>
int main()
{
int a[10];
int n, T;
scanf( "%d", &T);
while( T --)
{
scanf( "%d", &n);
if( n < 10){
printf( "%d\n", n);
continue;
}

memset( a, 0, sizeof a);
for( int i = 9; i >= 2;)
{
if( n % i == 0)
{
n /= i;
a[i] ++;
}
else i --;
}

if( n == 1)
for( int i = 2; i <= 9; i ++)
for( int j = 0; j < a[i]; j ++)
printf( "%d", i);

else printf( "-1");
printf( "\n");
}
return 0;
}

 

你可能感兴趣的:(uva)