先上代码:
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int inputNum = in.nextInt();
//取位数
int pos = 0;
int temp = inputNum;
while (temp / 10 != 0) {
++pos;
temp = temp / 10;
}
for (int poss = pos; poss > 1; poss--) {
for (int index = inputNum; index > 10; index--) {
List<Double> nums = new ArrayList<>();
//存放各个位数
for (int i = 0; i <= poss; i++) {
nums.add(Math.floor(index / Math.pow(10, poss - i) % 10));
}
//计算和
double sum = 0.0;
for (Double num : nums) {
sum += Math.pow(num, poss + 1);
}
//4150和4151是特殊情况
//当pos=5时,4^5+1^5+5^5+1^5=4150
//其实4150当时pos=4才对,所以把这两个数排除
if (sum == index) {
if (sum == 4150 || sum == 4151)
continue;
System.out.println(index);
}
}
}
}
pass:该题效率较低,欢迎大佬提供建议~
1205

被折叠的 条评论
为什么被折叠?



