import java.util.ArrayList;
import java.util.List;
//147. 水仙花数
//输入n位数如153 =1^3+5^3+3^3
public class Demo10 {
public static void main(String[] args) {
List<Integer> list =shuixianhua(4);
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
}
public static List<Integer> shuixianhua(int n){
List<Integer> count=new ArrayList<>();
if (n==1){ //如果是1位数的话,则都满足水仙花数的要求
for (int i = 0; i < 10; i++) {
count.add(i);
}
return count;
}
for (int j = (int)Math.pow(10,n-1); j <(int)Math.pow(10,n) ; j++) {//n位数的取值范围
int sum =0;
for (int i = 0; i < n; i++) {
sum =sum+(int) Math.pow((j/(int) Math.pow(10,i))%10,n);//每个位置上的数字的n次方求和
}
if (sum==j){//判断是不是水仙花数,如果是添加到count集合中
count.add(sum);
}
}
return count;
}
}