lotus

贵有恒何必三更眠五更起 最无益只怕一日曝十日寒

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

1. 题目

读题

 

数位之积(AC)

现给定任意正整数 n,请寻找并输出最小的正整数 m(m>9),使得 m 的各位(个位、十位、百位 … …)之乘积等于n,若不存在则输出 -1。

考查点

 

2. 解法

思路

 思路:让n除以从9 - 2的,如果整除:n变为n / i递归,并且将i放入list集合中

代码逻辑

 

具体实现

 

public class MutliSum {
public static void main(String[] args) {
System.out.println(findMinSum(100));
System.out.println(findMinSum(36));
System.out.println(findMinSum(17));
}

public static int findMinSum(int n) {

List<Integer> list = new ArrayList<>();
//是否可以被9到2整除
boolean flag = true;
while (n != 1 && flag) {
for (int i = 9; i >= 2; i--) {
if (n % i == 0) {
list.add(i);
n = n / i;
break;
}
if (i == 2 && n % i != 0) {
flag = false;
}
}
}
if (list.size() == 0) {
return -1;
}
int sum = 0;
for (int i = list.size() - 1; i >= 0; i--) {
sum = sum * 10 + list.get(i);
}
return sum;
}
}

3. 总结

posted on 2023-07-18 19:47  白露~  阅读(18)  评论(0编辑  收藏  举报