解题思路:一般来说,把数字按位数分开,我第一反应都是变成字符串(个人习惯)。因为要排序,而且为了方便插入,所以选了集合
注意事项:这个集合的排序我开始调试了很久还是1 2 145 40585,后面去询问大佬才知道,我开始集合创建的int 类型,排序比较的时候用的是值比较,所以并不是排序没起作用,而是我理解出了问题,把集合的类型改成String之后就可以了
参考代码:
package cn.yzf.clanguageTest;
import java.util.*;
public class Main {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<String>();
for(int i = 1 ;i <= 100000;i ++){
long sum =0;
int len = String.valueOf(i).length();
int a [] = new int[len];
String si = String.valueOf(i);
for(int j = 0;j < len;j++)
a[j] = si.charAt(j)-'0';
for(int j = 0;j < len;j ++){
long count = 1;
for(int k = 1;k <= a[j];k++)
count *= k;
sum += count;
}
if(sum == i)
list.add(i+"");
}
Collections.sort(list);
for(String i : list)
System.out.print(i+" ");
}
}
// =============Dragon be here!==========/
// ┏┓ ┏┓
// ┏┛┻━━━┛┻┓
// ┃ ┃
// ┃ ━ ┃
// ┃ ┳┛ ┗┳ ┃
// ┃ ┃
// ┃ ┻ ┃
// ┃ ┃
// ┗━┓ ┏━┛
// ┃ ┃神兽保佑
// ┃ ┃代码无BUG!
// ┃ ┗━━━┓
// ┃ ┣┓
// ┃ ┏┛
// ┗┓┓┏━┳┓┏┛
// ┃┫┫ ┃┫┫
// ┗┻┛ ┗┻┛
// ━━━━━━神兽出没━━━━━━
0.0分
0 人评分