Tabla de contenido
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≤ M ≤ N ≤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:
- Importe
readline
el módulo y cree un objeto de interfaz: primeroreadline
introduzca el módulo y usecreateInterface
métodos para crear un objeto de interfazrl
. Este objeto establece el flujo de entrada en entrada estándar. - Leer entrada y almacenar: al escuchar
'line'
eventos, almacene cada línea de entrada en una matrizbuf
. - Analiza la entrada y valídala:
buf[0].split(" ").map(Number)
convirtiendo la entrada en una matriz que contiene dos valoresarr
. Asigne el primer valor a la variablem
y el segundo valor a la variable respectivamenten
. Al mismo tiempo, sem
comprueba la validez de la suman
. Si no se cumplen las condiciones, se genera y se devuelve "Valor no válido". - Encuentra la cantidad de narcisos: crea una matriz vacía
res
. Utilice un bucle para recorrer cada númerofor
desdem
hasta .n
Para cada número, llame a una funciónisDaffodil
para determinar si es un número de narciso y, si es así, agréguelo a la matrizres
. - Resultado de salida: si
res
la 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, usefor...of
un bucle para recorrer la matrizres
y generar el número de cada narciso. - 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,true
en caso contrariofalse
.
.
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
}
.