水仙花数
所谓的水仙花数是指一个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)
机试题 文章被收录于专栏
 某机试题,网上很少用js写的答案只有自己写了

 查看9道真题和解析
查看9道真题和解析