uva--993Product of digits

2015-01-27 06:10:35 · 作者: · 浏览: 7

水题一枚,如果n能分解成2--9的因子相乘的形式的话肯定是可以的,如果不行那么就直接输出-1;

那么当能分解的时候,为了能使得答案的值最小,我们选择先分解大的因子;也就是按9--2的次序进行分解。

分解后直接按因子从小到大输出就是答案了。


代码如下:


#include
  
   
#include
   
     #include
    
      using namespace std; int main() { int i,j,k,t,ans[50]; long long n; scanf("%d",&t); while(t--) { k=0; scanf("%lld",&n); if(n==1) { printf("1\n"); continue; } for(i=9;i>=2;i--) while(n%i==0) { ans[k++]=i; n=n/i; } if(n>10) { printf("-1\n"); continue; } for(i=k-1;i>=0;i--) printf("%d",ans[i]); printf("\n"); } return 0; }