Ir al contenido (saltar navegación)

¿Qué es?

¡Acepta el reto! es un almacén y juez en línea de problemas de programación en español que acepta soluciones en C, C++ y Java.

No es un mero listado de problemas, sino mucho más. ¡Es un corrector automático!

Si quieres poner a prueba tu habilidad programando y compararla con la de otros, ¡éste es tu sitio!

¿Por dónde empiezo?

Si no conoces este tipo de jueces, te ayudamos a resolver el primer problema para que entiendas la dinámica del uso y no cometas los errores más comunes.

Luego puedes resolver algún otro de los múltiples problemas disponibles. Si no sabes por cuál empezar, puedes recorrer las diferentes categorías o mirar el problema de la semana que te proponemos abajo. También puedes mirar lo que otros usuarios están resolviendo.

¿Aceptas el reto?

Problema de la semana

Sistema de numeración factorial

Los sistemas de numeración son todo un mundo. Estamos tan habituados a la notación decimal (y algunos también a la binaria) que no la valoramos. Un buen ejercicio para hacerlo es, sin duda, intentar sumar números romanos.

La notación decimal, igual que la binaria o la hexadecimal, pertenece a la "familia" de notaciones posicionales: el valor de un dígito se multiplica por un factor que depende de la posición que ocupa en el número completo. Se ve bien con un ejemplo: en el número 444 cada uno de los guarismos "4" aportan una cantidad distinta a la cifra final. En concreto el factor que multiplica al número más a la derecha es el 1 y este factor se va multiplicando por 10 según vamos hacia la izquierda.

Este tipo de numeración en el que los factores se van multiplicando por un valor fijo son los más habituales. Así funciona la notación decimal (base 10), el sistema binario (base 2) y el hexadecimal (base 16), por ejemplo. Hay, no obstante, otros sistemas de numeración cuya base es una mezcla y el factor no es multiplicado siempre por el mismo valor. A quien le sorprenda esto que piense en la forma en la que medimos el tiempo. La Tierra, por ejemplo, tarda 52 semanas, 1 día, 6 horas, 9 minutos, 9 segundos y 733 milisegundos en dar la vuelta al Sol. Pensándolo bajo el prisma de los sistemas de numeración, ese "número" está formado por los "dígitos" 52 1 6 9 9 733 y se mezclan la base 7, 24, 60 y 1000 dependiendo de la posición.

Otro sistema de numeración de base mixta es el sistema de numeración factorial (también conocido como factorádico). En él el dígito menos significativo está en base 0!, el siguiente en 1! y le siguen el 2!, 3!, etc.

A modo de ejemplo, en este sistema el número 2.3.0.1.1.0 (separando los dígitos con puntos pues para números más grandes cada "dígito" podría requerir más de un guarismo) sería en decimal equivalente a:

2.3.0.1.1.0 = 2 × 5! + 3 × 4! + 0 × 3! + 1 × 2! + 1 × 1! + 0 × 0! = 315

Lo bueno de este sistema de numeración es que permite expresar números muy grandes con pocos dígitos. Y si en algún sitio salen números grandes, es cuando contamos la cantidad de permutaciones de un conjunto de objetos.

Dado un número de N dígitos en factorádico, ¿a qué permutación de los elementos entre 1 y N representa si las ponemos una detrás de otra en orden?