题意:
是找到一个最小的正整数Q,使Q的各位数的乘积等于N。
思路:
从9到2取余。
代码:
#include < iostream >
#include < algorithm >
using namespace std;
bool fun( int x, int * ops, int & num)
{
if (x == 1 ) return 1 ;
for ( int i = 9 ;i >= 2 ;i -- )
{
if (x % i == 0 )
{
ops[num] = i;
num ++ ;
return fun(x / i,ops,num);
}
}
return 0 ;
}
int main()
{
int n;
while (cin >> n)
{ if (n == 0 ) cout << 10 << endl;
else if (n <= 9 ) cout << n << endl;
else
{
int ops[ 11 ];
int num = 0 ;
if (fun(n,ops,num))
{
sort(ops,ops + num);
for ( int k = 0 ;k < num;k ++ )
cout << ops[k];
cout << endl;
}
else
cout <<- 1 << endl;
}
}
return 0 ;
}