各位数字的五次幂

令人惊讶的是,只有三个数可以写成它们各位数字的四次幂之和:

1634 = 14 + 64 + 34 + 44
8208 = 84 + 24 + 04 + 84
9474 = 94 + 44 + 74 + 44

由于1 = 14不是一个和,所以这里并没有把它包括进去。

这些数的和是1634 + 8208 + 9474 = 19316。

找出所有可以写成它们各位数字的五次幂之和的数,并求这些数的和。

#include<iostream>
using namespace std;

int num[15];
int init() {
num[1] = 1;
for (int i = 2; i < 10; i++) {
int t = i;
for (int j = 0; j < 4; j++) {
t *= i;
}
num[i] = t;
cout << i << ":" << num[i] << endl;
}
cout << endl;
}
int func(int x) {
int t = 0, rawx = x;
while (x) {
t += num[x % 10];
x /= 10;
}
return rawx == t;
}

int main() {
int ans = 0;
init();
for (int i = 2; i < 1000000; i++) {
if (func(i)) {
cout << i << endl;
ans += i;
}
}
cout << ans << endl;
return 0;
}