描述
水仙花数的定义是,这个数等于他每一位数上的幂次之和 见维基百科的定义
比如一个3位的十进制整数153就是一个水仙花数。因为 153 = 13 + 53 + 33。
而一个4位的十进制数1634也是一个水仙花数,因为 1634 = 14 + 64 + 34 + 44。
给出n,找到所有的n位十进制水仙花数。
你可以认为n小于8。
样例
输入: 1
输出: [0,1,2,3,4,5,6,7,8,9]
代码
package com.Address;
import io.swagger.models.auth.In;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class ces {
//判断是否为水仙花数
public static boolean isNum(int m,int n){
int sum = 0;
int t1 = n;
int t2 = m;
while (t2>0){
int c = (int) (t2/Math.pow(10,t1-1));
sum += Math.pow(c,n);
t2 -= c*Math.pow(10,t1-1);
t1-=1;
}
if (sum == m){
return true;
}
return false;
}
//确定min和max并循环
public static List<Integer> getNum(int min,int max,int n){
System.out.println(min+"
"+max+"
"+n);
List<Integer> list = new ArrayList<Integer>();
int count = 0;
for (int i = min;i<=max;i++){
if (isNum(i,n)){
list.add(i);
count++;
}
}
return list;
}
public static void main(String[] args) {
List<Integer> list = null;
int n = new Scanner(System.in).nextInt();
if (n==1){
System.out.println("[0,1,2,3,4,5,6,7,8,9]");
}
list = getNum((int) Math.pow(10,n-1), (int) Math.pow(10,n)-1,n);
for (int c:list){
System.out.println(c);
}
}
}
结果格式好像不对,应该是[...]