Sunday, August 14, 2016

Timus : 1014 (Product of Digits)

#include<bits/stdc++.h>
#define INF_MAX 2147483647
#define INF_MIN -2147483647
#define pi acos(-1.0)
#define N 1000000
#define LL long long

#define For(i, a, b) for( int i = (a); i < (b); i++ )
#define Fors(i, sz) for( size_t i = 0; i < sz.size (); i++ )
#define Fore(it, x) for(typeof (x.begin()) it = x.begin(); it != x.end (); it++)
#define Set(a, s) memset(a, s, sizeof (a))
#define Read(r) freopen(r, "r", stdin)
#define Write(w) freopen(w, "w", stdout)

using namespace std;
vector<int>v;
void recur(LL n)
{
    if(n<10)
    {
        v.push_back(n);
        return;

    }

    for(int i=9; i>2; i--)
    {
        if(n%i==0)
        {
            v.push_back(i);
            recur(n/i);
            break;
        }
    }

}

int main()
{
    LL n;

    while(cin>>n)

    {
        if(n==0)
        {
            printf("10\n");
            continue;
        }
        v.clear();
        recur(n);
        sort(v.begin(),v.end());
        LL product=1;
        Fors(i,v) product*=v[i];
        if(product==n)
        {
            Fors(i,v) printf("%d",v[i]);
            printf("\n");
        }
        else printf("-1\n");

    }
    return 0;
}

0 Comments:

Post a Comment

Subscribe to Post Comments [Atom]

<< Home