Your task is to find the minimal positive integer number
Q so that the product of digits of
Q is exactly equal to
N.
The input contains the single integer number
N (0 ≤
N ≤ 10
9).
Your program should print to the output the only number
Q. If such a number does not exist print −1.
input | output |
---|---|
10 | 25 |
题意
求最小正整数的乘积是n
思路
简单题,注意0时输出10即可
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll a[20];
ll flag;
ll w;
void f(ll x)
{
ll i;
if(x==1)
{
flag=1;
return ;
}
for(i=9;i>=2;i--)
{
if(x%i==0)
{
a[i]++;
f(x/i);
return ;
}
}
}
int main()
{
ll n,i;
flag=0;
cin>>n;
w=0;
if(n==0)
{
printf("10\n");
return 0;
}
if(n==1)
{
printf("1\n");
return 0;
}
memset(a,0,sizeof(a));
f(n);
// for(i=2;i<=9;i++)
// printf("%d ",a[i]);
if(!flag) printf("-1\n");
else
{
for(i=2;i<=9;i++)
{
while(a[i])
{
printf("%lld",i);
a[i]--;
}
}
printf("\n");
}
return 0;
}