概述:你的任务是寻找一个最小的正整数,它的各个位置上的数字乘积为输入的非负整数Q。
算法:能够成因子的是2~9的数字,而且,要从大到小去试验能否整除;注意特殊情况
#include <iostream>
#include <cstring>
using namespace std;
int n,num[11];
void doit()
{
if (n==0)
{
cout<<10<<endl;
return ;
}
if (n==1)
{
cout<<1<<endl;
return ;
}
for(int i=9;i>=2;i--)
{
while (n%i==0)
{
num[i]++;
n/=i;
}
if (n==0) break;
}
if (n!=1)
{
cout<<-1<<endl;
return;
}
for(int i=2;i<=9;i++)
{
for(int j=1;j<=num[i];j++)
cout<<i;
}
cout<<endl;
}
int main()
{
cin>>n;
memset(num,0,sizeof(num[0]));
doit();
return 0;
}