题目
令人惊奇的,只有三个数能够写成它们各位数的四次方之和:
1634=14+64+34+44
8208=84+24+04+84
9474=94+44+74+44
1=14 没有被算作在内因为它不是一个和。这些数字的和是 1634+8208+9474=19316 .
找出所有能被写成各位数字五次方之和的数之和。
解题方法
迭代a到b的数,满足要求则累加至sum,否则继续下一个数。
因为一位数的五次方不是一个和,所以a的起始值定为10。
b的取值是当各位取最大值,其各位5次方和不可能达到的数,这个数是354294,所以b取354294。
因为一个六位数,各位五次方之和最大时,明显这个6位数为999999,但是此时各位的5次方之和仅为354294。
程序
public static void solve() {
int sum = 0;
for (int num = 10; num < 354294; num++) {
// 各位5次方和等于自己
if (num == fivePow(num)) {
sum += num;
}
}
// 输出满足条件的整数之和
System.out.println(sum);
}
public static int fivePow(int num) {
char[] digit = String.valueOf(num).toCharArray();
int pow = 0;
for (char c: digit) {
pow += (int)Math.pow(c-48,5);
}
return pow;
}