Solución del problema de Pintia - 7-13 Encuentra el número de narciso de tres dígitos

7-13 Encuentra el número de narciso de tres dígitos

Titulo original:

Esta pregunta requiere escribir un programa para generar todos los números de narciso de tres dígitos en el intervalo entre los enteros positivos dados M y N. Un número narciso de tres cifras, es decir, la suma de los cubos de sus unidades, decenas y centenas es igual al número mismo.

Formato de entrada:

La entrada se proporciona como dos números enteros positivos M y N en una línea (100≤ MN ≤999).

Formato de salida:

Genere todos los números de narciso de tres dígitos en los intervalos M y N secuencialmente, un número en cada línea. Si no hay ningún número narciso de tres dígitos en este intervalo, no hay salida.

Si M o N no cumple con los requisitos de la pregunta, envíelo Invalid Value..

.

Ideas para resolver problemas:

  1. Importe readlineel módulo y cree un objeto de interfaz: primero readlineintroduzca el módulo y use createInterfacemétodos para crear un objeto de interfaz rl. Este objeto establece el flujo de entrada en entrada estándar.
  2. Leer entrada y almacenar: al escuchar 'line'eventos, almacene cada línea de entrada en una matriz buf.
  3. Analiza la entrada y valídala: buf[0].split(" ").map(Number)convirtiendo la entrada en una matriz que contiene dos valores arr. Asigne el primer valor a la variable my el segundo valor a la variable respectivamente n. Al mismo tiempo, se mcomprueba la validez de la suma n. Si no se cumplen las condiciones, se genera y se devuelve "Valor no válido".
  4. Encuentra la cantidad de narcisos: crea una matriz vacía res. Utilice un bucle para recorrer cada número fordesde mhasta . nPara cada número, llame a una función isDaffodilpara determinar si es un número de narciso y, si es así, agréguelo a la matriz res.
  5. Resultado de salida: si resla longitud de la matriz es menor que 1, significa que la cantidad de narcisos no se encuentra en el rango dado y se devuelve directamente. De lo contrario, use for...ofun bucle para recorrer la matriz resy generar el número de cada narciso.
  6. Definir función isDaffodil: esta función se utiliza para determinar si un número es un número de narciso. Convierta el número en una cadena e itere sobre cada carácter numérico, calculando la suma de sus cubos. Devuelve si la suma de los cubos es igual al número original, trueen caso contrario false.

.

Código JavaScript (nodo):

const r = require("readline");
const rl = r.createInterface({
    
    
    input: process.stdin
});
let buf = [];
rl.on('line', (input) => buf.push(input));
rl.on('close', () => {
    
    
    let arr = buf[0].split(" ").map(Number)
    let m = arr[0]
    let n = arr[1]
    if (!(100 <= m && m <= n && n <= 999)) {
    
    
        console.log("Invalid Value.")
        return
    }


    let res = []
    for (let i = m; i <= n; i++) {
    
    
        if (isDaffodil(i)) {
    
    
            res.push(i)
        }
    }

    if (res.length < 1) {
    
    
        return
    } else {
    
    
        for (let i of res) {
    
    
            console.log(i);
        }
    }

});

function isDaffodil(num) {
    
    
    let str = "" + num
    let sum = 0
    for (let i of str) {
    
    
        sum += parseInt(i) ** 3
    }
    return num == sum
}

.

Análisis de complejidad:

Complejidad del tiempo: O (nm)
Complejidad espacial: O (n)

Supongo que te gusta

Origin blog.csdn.net/Mredust/article/details/133519243
Recomendado
Clasificación