描述
中文English
水仙花数的定义是,这个数等于他每一位上数的幂次之和 见维基百科的定义
比如一个3位的十进制整数153
就是一个水仙花数。因为 153 = 13 + 53 + 33。
而一个4位的十进制数1634
也是一个水仙花数,因为 1634 = 14 + 64 + 34 + 44。
给出n
,找到所有的n位十进制水仙花数。
样例
Example 1:
Input: 1
Output: [0,1,2,3,4,5,6,7,8,9]
Example 2:
Input: 2
Output: []
Explanation:
There is no Narcissistic Number with 2 digits.
代码
public List<Integer> getNarcissisticNumbers(int n) {
// write your code here
List<Integer> list = new ArrayList<>();
int i;
int j;
if (n == 1) {
for (i = 0; i <= 9; i++) {
list.add(i);
}
return list;
} else if (n == 2) {
return list;
} else {
for (i = (int) Math.pow(10, n - 1); i <= 9 * Math.pow(10, n) - 1; i++) {
String iString = String.valueOf(i);
int num = 0;
for (j = 1; j <= n; j++) {
num = num + (int) Math.pow(Integer.valueOf(iString.substring(j - 1, j)), n);
}
if (num == i) {
list.add(i);
}
}
return list;
}
}
可以运行出正确结果,不过运算效率有点低, 还需要优化