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;
}