水題一枚,如果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; }