目录
题目
所谓水仙花数,是指一个n位的正整数,其各位数字的n次方和等于该数本身。
例如153是水仙花数,153是一个3位数,并且153 = 1^3 + 5^3 + 3^3。
输入描述
第一行输入一个整数n,表示一个n位的正整数。n在3到7之间,包含3和7。
第二行输入一个正整数m,表示需要返回第m个水仙花数。
输出描述
返回长度是n的第m个水仙花数。个数从0开始编号。
若m大于水仙花数的个数,返回最后一个水仙花数和m的乘积。
若输入不合法,返回-1。
示例1 输入输出示例仅供调试,后台判题数据一般不包含示例
输入
3 0
输出
153
说明
153是第一个水仙花数
示例2 输入输出示例仅供调试,后台判题数据一般不包含示例
输入
9
1
输出
-1
说明
9超出范围
思路
code
var fn = function (n, m) {
if (!(n >= 3 && n <= 7)) {
console.log(-1);
return;
}
let min = parseInt('1' + "0".repeat(n - 1));
let max = parseInt('9'.repeat(n));
let cal = (val, n) => {
let token = val.toString().split("").map(e => parseInt(e));
let sum = 0;
for (let i = 0; i < token.length; i++) {
const element = token[i];
sum += Math.pow(element, n)
}
return sum;
}
let arr = [];
// cal(153,3)
for (let index = min; index <= max; index++) {
if (index == cal(index, n)) {
arr.push(index);
}
}
console.log(arr);
if(m>arr.length -1){
console.log(m*arr[arr.length-1]);
}else{
console.log(arr[m]);
}
}
fn(3,0)