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

Envío 7131

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

  • Autor: dperezne
  • Fecha: 2023-09-20 22:48:21 UTC (Hace 8 meses)
Caso # Resultado Tiempo Memoria
#1
Correcto
0.101 s 13 KBi
#2
Incorrecto
0.098 s 13 KBi
#3
Correcto
0.096 s 13 KBi
#4
Correcto
0.103 s 13 KBi
#5
Correcto
0.701 s 98 KBi
#6
Correcto
0.708 s 97 KBi
#7
Correcto
0.702 s 92 KBi
#8
Correcto
0.713 s 95 KBi
#9
Tiempo límite excedido
1.103 s 92 KBi
#10
Tiempo límite excedido
1.059 s 29 KBi
#11
Tiempo límite excedido
1.081 s 30 KBi
#12
Tiempo límite excedido
1.016 s 42 KBi
#13
Error en tiempo de ejecución (NZEC)
Exited with error status 137
run.sh: line 1:     3 Killed                  /usr/local/openjdk13/bin/java Main
0.507 s 125 KBi
#14
Tiempo límite excedido
1.118 s 40 KBi
#15
Incorrecto
0.727 s 94 KBi
Puntos totales: 47 / 100

Código

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        // Leer el número de denominaciones
        int N = scanner.nextInt();

        // Leer las denominaciones
        int[] denominaciones = new int[N];
        for (int i = 0; i < N; i++) {
            denominaciones[i] = scanner.nextInt();
        }

        // Leer el número de consultas
        int M = scanner.nextInt();

        // Procesar las consultas
        for (int i = 0; i < M; i++) {
            int consulta = scanner.nextInt();
            int formasPosibles = contarFormas(denominaciones, consulta);
            System.out.println(formasPosibles);
        }
    }

    static int contarFormas(int[] denominaciones, int S) {
        int[] formas = new int[S + 1];
        formas[0] = 1;

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

        return formas[S];
    }
}