题目描述
现给定任意正整数n,请寻找并输出最小的正整数m(m>9),使得m的各位(个位、十位…)之乘积等于n,若不存在则输出-1.
输入例子1:
36
- 1
输出例子1:
49
- 1
输入例子2:
100
- 1
输出例子2:
455
解析:
这道题我们可以分解因子,且因子都是一位数(小于10),因为要求最小,49和94都符合标准的话优先49,所以从9开始看是否能整除,能的话作为低位,高一位的数递归接着求;如果2~9都不能做因子说明不存在答案,返回-1。
#include<stdio.h>
#include<stdlib.h>
int main(){
char n[10];
scanf("%s",n);
printf("%d",func(n));
return 0;
}
int func(char* input){
int n=atoi(input);
int m=0,a=1,i;
for(i = 9;i>1;i--){
if(n%i==0){
m=m+i*a;
n/=i;
i=10;
a*=10;
}
}
if(n!=1){
return -1;
}
return m;
}