█████████ ████ ███░░░░░███ ░░███ ███ ░░░ ██████ ███████ ██████ ██████ ░███ ███░░███ ███░░███ ███░░███ ███░░███ ░███ ░███ ░███░███ ░███ ░███████ ░███ ░███ ░░███ ███░███ ░███░███ ░███ ░███░░░ ░███ ░███ ░░█████████ ░░██████ ░░████████░░██████ ░░██████ ░░░░░░░░░ ░░░░░░ ░░░░░░░░ ░░░░░░ ░░░░░░

Envío 7132

Problema 0xcb - Contar maneras de formar una cantidad con monedas

  • Autor: dperezne
  • Fecha: 2023-09-20 22:49:18 UTC (Hace alrededor de 1 año)
Caso # Resultado Tiempo Memoria
#1
Incorrecto
0.034 s 7 KBi
#2
Incorrecto
0.036 s 7 KBi
#3
Incorrecto
0.035 s 7 KBi
#4
Incorrecto
0.036 s 7 KBi
#5
Incorrecto
0.165 s 17 KBi
#6
Incorrecto
0.171 s 18 KBi
#7
Incorrecto
0.176 s 14 KBi
#8
Incorrecto
0.165 s 15 KBi
#9
Incorrecto
0.162 s 14 KBi
#10
Incorrecto
0.164 s 14 KBi
#11
Incorrecto
0.187 s 16 KBi
#12
Incorrecto
0.194 s 18 KBi
#13
Incorrecto
0.208 s 18 KBi
#14
Incorrecto
0.205 s 18 KBi
#15
Incorrecto
0.182 s 15 KBi
Puntos totales: 0 / 100

Código

function contarFormas(denominaciones, S) {
    let formas = new Array(S + 1).fill(0);
    formas[0] = 1;

    for (let d of denominaciones) {
        for (let s = d; s <= S; s++) {
            formas[s] += formas[s - d];
        }
    }

    return formas[S];
}

// Leer la entrada
const readline = require('readline');

const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout
});

rl.question('Ingrese el número de denominaciones: ', (N) => {
    rl.question('Ingrese las denominaciones separadas por espacios: ', (denominacionesInput) => {
        const denominaciones = denominacionesInput.split(' ').map(Number);

        rl.question('Ingrese el número de consultas: ', (M) => {
            for (let i = 0; i < M; i++) {
                rl.question(`Consulta #${i + 1}: `, (consultaInput) => {
                    const consulta = parseInt(consultaInput);
                    const formasPosibles = contarFormas(denominaciones, consulta);
                    console.log(`Número de formas posibles para ${consulta} centavos: ${formasPosibles}`);
                    if (i === M - 1) {
                        rl.close();
                    }
                });
            }
        });
    });
});