#include <stdio.h>
// compute sum of digits
long long digitSum(long long n) {
long long s = 0;
while (n > 0) {
s += n % 10;
n /= 10;
}
return s;
}
int main() {
long long results[3] = { 0 };
int count = 0;
for (long long n = 2; count < 3; n++) {
long long s = digitSum(n);
// Try powers k = 2..10 (enough for reasonable ranges)
long long p = s * s;
for (int k = 2; k <= 10; k++) {
if (p == n) {
printf("Found: %lld = (%lld)^%d\n", n, s, k);
results[count++] = n;
break; // stop checking powers for this n
}
p *= s; // next power
}
}
printf("\nFirst 3 numbers:\n");
for (int i = 0; i < 3; i++) {
printf("%lld\n", results[i]);
}
return 0;
}
/*
run:
Found: 81 = (9)^2
Found: 512 = (8)^3
Found: 2401 = (7)^4
First 3 numbers:
81
512
2401
*/