import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt(); // 输入n,水仙花位数
// 计算水仙花数的范围
int lowerBound = (int) Math.pow(10, n - 1);
int upperBound = (int) Math.pow(10, n);
// 缓存每个数字的n次方
int[] powers = new int[10];
for (int i = 0; i < 10; i++) {
powers[i] = (int) Math.pow(i, n);
}//这里提前计算好每个数字的n次方,避免后面每次比较水仙花数是都从新计算一次,节约大量时间,虽然计算机运行速度很快
for (int i = lowerBound; i < upperBound; i++) {
int temp = i;//这里使用weile循环,是为了把数字拆分得到每一位的数字,temp能很好地控制weile循环,这个方法非常好
int sum = 0;
while (temp > 0) {
int digit = temp % 10;
sum += powers[digit]; // 使用缓存的n次方
temp /= 10;//这里每次数字都会去掉最后一位数字
}
if (i == sum) {
System.out.println(i); // 直接输出水仙花数
}
}
}
}
03-03
920
11-17
878
10-06
297
09-13