/*
一次AC
题意:输入N,求出最小的Q,其中Q的所有位数相乘等于N。如果不存在输出-1。product of digit.其中product的意思就是相乘的意思。
贪心策略:N每次除以[2,9]之间可整除的最大数,并将这个数作为Q的最后一位,循环直到N<10,这时Q也最小。
为方便书写程序,Q使用数组表示。
*/
#include <cstdio>
int N;
int Q[10],top;
void solve()
{
while(N>9)
{
int i;
for(i=9;i>1;i--)
if(N%i==0)
break;
if(i!=1)
{
Q[top++]=i;
N/=i;
}
else
{
Q[0]=-1;
top=1;
break;
}
}
if(N<10)
Q[top++]=N;
return;
}
int main()
{
//freopen("f://data.in","r",stdin);
int T;
scanf("%d",&T);
while(T--)
{
top=0;
scanf("%d",&N);
solve();
for(int i=top-1;i>=0;i--)
printf("%d",Q[i]);
printf("\n");
}
return 0;
}
993 - Product of digits
最新推荐文章于 2020-11-12 15:52:09 发布