解题思路:一般来说,把数字按位数分开,我第一反应都是变成字符串(个人习惯)。因为要排序,而且为了方便插入,所以选了集合
注意事项:这个集合的排序我开始调试了很久还是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 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复