考題日期:2017/03/28
題號:993
星等:2
語言:C++
題目:
題意:
給一個大於等於 0 的整數 N,請你找到最小的自然數 Q ,使得在 Q 中所有數字(digit)的乘積等於 N 。
程式:
#include <iostream>
using namespace std;
int main()
{
    int test;
    long long num;
    cin>>test;
    while(test--)
    {
        cin>>num;
        int arr[10000],n = 0;
        if(num == 1)
        {
            cout<<"1";
        }
        else
        {
            for(int i = 9 ; i > 1 ; i--)
            {
                while(num%i == 0 && num >= i)
                {
                    num /= i;
                    arr[n++] = i;
                }
            }
            if(num == 1)
            {
                for(int i = n-1 ;i >= 0 ; i--)
                {
                    cout<<arr[i];
                }
            }
            else
                cout<<"-1";
        }
        cout<<endl;
    }
    return 0;
}
測資:
測資第一行為測資數量,接下來Input、Output各一行。