所谓的水仙花数是指一个n位的正整数其各位数字的n次方的和等于该数本身
例如例如153=1^3+5^3+3^3,153是一个三位数,153是一个三位数
输入描述:
第一行输入一个整数N,表示N位的正整数N在3-7之间包含3,7
第二行输入一个正整数M,表示需要返回第M个水仙花数
输出描述:
返回长度是N的第M个水仙花数,个数从0开始编号
若M大于水仙花数的个数返回最后一个水仙花数和M的乘积
若输入不合法返回-1
示例
输入:
3
0
输出:
153
说明:
153是第一个水仙花数
输入:
9
1
输出
-1
let N = 7
let M = 3
function test(N) {
let arr = []
for(let i = pow(10,N-1);i<pow(10,N);i++){
// console.log(i);
let sum = 0
let bit = 0
let x= Number(i)
// let num = String(i)
while( x ){ // 取各位,求和
bit = x % 10;
sum += pow(bit, N);
x = parseInt(x/10);
}
// for(let j=0;j<num.length;j++){
// sum+= pow(Number(num[j]),N)
// }
// console.log(sum);
if(sum===i){
arr.push(i)
}
}
if(M>arr.length){
console.log(arr[arr.length-1]*M);
}else {
console.log(arr[M]);
}
}
function pow(x,y){
let result = 1
for(let i=0;i<y;i++){
result*=x
}
return result
}
test(N)