993 - Product of digits

来源:互联网 发布:软件授权码后台 编辑:程序博客网 时间:2024/04/27 11:27
/*一次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;}

原创粉丝点击