Problemas de ¡Acepta el reto! propuestos como ejercicios de práctica en el grupo G de la asignatura Fundamentos de Algoritmia de la Facultad de Informática de la UCM.
En esta página irán apareciendo los ejercicios sugeridos, organizados en distintos periodos temporales y/o temáticos. Cada pestaña permite visualizar la lista de problemas de ¡Acepta el reto! correspondientes a un periodo, así como las personas que los han intentado resolver durante el intervalo temporal indicado.
Te recomiendo enfrentarte a la resolución de todos los problemas: picarte con ellos, probar ideas, pensar cómo hacerlo mejor... La experiencia, y lo que de ella aprendas, te resultará de gran ayuda para entender y preparar la asignatura, y te permitirá coger soltura para enfrentarte con los problemas del examen.
| Sesión | |
|---|---|
| #1 | Calentando motores... |
| #2 | De qué va la algoritmia... |
| #3 | Algoritmos iterativos (1) |
| #4 | Algoritmos iterativos (2) |
| #5 | Algoritmos recursivos |
| #6 | Divide y vencerás (1) |
| #7 | Divide y vencerás (2) |
En la parte inferior puedes ver el resumen/resultado de todos los envíos realizados a lo largo del primer cuatrimestre de FAL del curso 2025-2026 por parte de estudiantes del grupo G de 2º de la Facultad de Informática de la UCM.
Los envíos están divididos en distintos periodos que se corresponden con secciones temáticas o conceptuales de la asignatura.
Cada periodo tiene su propia pestaña, en la cual podrás ver sus detalles. Además del intervalo temporal correspondiente a ese periodo y los ejercicios recomendados, aparecerá una clasificación con las personas que han resuelto más ejercicios (en caso de empate, ganan las que los hayan resuelto en menos tiempo).
Ten en cuenta que en la clasificación aparecen solamente las personas que sean usuarias de ¡Acepta el Reto!, estén matriculadas en la asignatura y hayan comunicado a la profesora su identificador de usuario a través del Campus Virtual de la asignatura.
La tabla que aparece a continuación resume el número total de problemas resueltos en cada periodo por cada estudiante.
Arrancamos con unos sencillos problemas que no requieren grandes conocimientos de programación.
No son más que una excusa para utilizar el juez, desentumecer tus músculos y comprobar que tus envíos aparecen. Para ello, solo debes completar la tarea del CV y esperar a que yo procese tus respuestas (manualmente).
Un consejo a no perder de vista: piensa con calma antes de lanzarte a programar.
Primeros problemas para descubrir que la algoritmia no es únicamente programar.
Algunos de estos problemas parecen tener solución obvia pero, al programarla y enviarla al juez, descubrimos que es demasiado lenta. En eso consiste la algoritmia: en encontrar métodos más eficientes que la primera solución que se nos viene a la cabeza.
Si no conseguís escapar del time-limit (TLE), no os preocupéis. Los algoritmos eficientes son el alma de la asignatura y no hemos hecho más que empezar...
Estos problemas se resuelven guardando información sobre la parte del vector ya recorrida, o bien procesando el vector para obtener datos que luego permitan resolver el problema más fácilmente.
Debes pensar bien la información necesaria para resolver cada problema antes de empezar a programarlo, así como calcular el coste del algoritmo para evitar un time-limit (TLE).
Lo importante no es únicamente conseguir el AC, sino implementarlos con un código compacto y claro.
Además, recomendamos practicar en todos ellos su especificación pre/post, la función de cota y el invariante.
Con estos problemas pondrás en práctica varios de los esquemas algorítmicos iterativos que estudiamos durante el curso.
Debes pensar bien la información necesaria para resolver cada problema antes de empezar a programarlo, así como calcular el coste del algoritmo para evitar el time-limit (TLE).
Lo importante no es únicamente conseguir el AC, sino implementarlos con un código compacto y claro.
La recursión se utiliza mucho en FAL. El tema 4 sienta las bases de los algoritmos recursivos. No los abandonaremos el resto del cuatrimestre (y forman parte importante de parte de la materia de ED).
Algunos de los ejercicios que aparecen aquí pueden implementarse también de forma iterativa. Pero para familiarizarte cuanto antes con el pensamiento recursivo, es preferible que los resuelvas con recursión y practiques así los conceptos del tema. Mejor aún sería que dieras varias pasadas por cada problema: empezando con recursión, que luego conviertes a recursión final, para terminar con la versión iterativa del algoritmo.
Hay un problema que, incluso, puede resolverse con una expresión.
Estos ejercicios ponen en práctica lo básico de la recursión: todos ellos han sido resueltos por mis estudiantes de FP2 de los últimos cursos.
El problema 357 - La prueba de las cajas y las bolas no es un ejercicio de divide y vencerás como tal, pero la estrategia seguida por el protagonista del concurso sí sigue esa idea.
Por su parte, el problema 342 - ¡No lo puedes saber! NO es de divide y vencerás, pero la temática es el juego de adivinar el número, por lo que se incluye aquí como testigo de que el juego es un ejemplo típico de divide y vencerás y búsqueda binaria.
El problema 306 - Dos igualdades sorprendentes presenta uno de los mejores algoritmos para calcular un número de Fibonacci: el primero que vimos tenía complejidad cuadrática, el segundo complejidad lineal y este tiene complejidad logarítmica. Es una consecuencia de la versión rápida de la exponenciación.
El problema 631 - Ascensores con nivel es el más complejo de resolver y por eso está el último. Si no lo conseguís, no os preocupéis.