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

Envío 7133

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

  • Autor: dperezne
  • Fecha: 2023-09-20 22:52:09 UTC (Hace 8 meses)
Caso # Resultado Tiempo Memoria
#1
Incorrecto
0.005 s 5 KBi
#2
Incorrecto
0.004 s 5 KBi
#3
Incorrecto
0.004 s 8 KBi
#4
Incorrecto
0.004 s 6 KBi
#5
Incorrecto
0.398 s 14 KBi
#6
Incorrecto
0.405 s 13 KBi
#7
Incorrecto
0.424 s 19 KBi
#8
Incorrecto
0.32 s 16 KBi
#9
Tiempo límite excedido
1.037 s 14 KBi
#10
Tiempo límite excedido
1.104 s 10 KBi
#11
Tiempo límite excedido
1.095 s 11 KBi
#12
Tiempo límite excedido
1.065 s 12 KBi
#13
Incorrecto
0.37 s 14 KBi
#14
Tiempo límite excedido
1.079 s 12 KBi
#15
Incorrecto
0.691 s 16 KBi
Puntos totales: 0 / 100

Código

package main

import "fmt"

func contarFormas(denominaciones []int, S int) int {
	formas := make([]int, S+1)
	formas[0] = 1

	for _, d := range denominaciones {
		for s := d; s <= S; s++ {
			formas[s] += formas[s-d]
		}
	}

	return formas[S]
}

func main() {
	// Leer la entrada
	var N int
	fmt.Print("Ingrese el número de denominaciones: ")
	fmt.Scan(&N)

	denominaciones := make([]int, N)
	fmt.Print("Ingrese las denominaciones separadas por espacios: ")
	for i := 0; i < N; i++ {
		fmt.Scan(&denominaciones[i])
	}

	var M int
	fmt.Print("Ingrese el número de consultas: ")
	fmt.Scan(&M)

	for i := 0; i < M; i++ {
		var consulta int
		fmt.Printf("Consulta #%d: ", i+1)
		fmt.Scan(&consulta)
		formasPosibles := contarFormas(denominaciones, consulta)
		fmt.Printf("Número de formas posibles para %d centavos: %d\n", consulta, formasPosibles)
	}
}