Transporte espacial

Transcripción

Transporte espacial
Transporte espacial
En el sistema B-42 de la galaxia Andrómeda se lleva mucho eso de vivir en un planeta
y trabajar en otro. El planeta Gliese es el más céntrico, y es donde se sitúan todos los
negocios del sistema. La vivienda ahı́ es muy cara, ası́ que la mayorı́a de habitantes del
sistema optan por vivir en planetas del extrarradio, y tienen que viajar cada dı́a para poder ir
a trabajar. Como el transporte privado es muy contaminante, todos los planetas han decidido
adscribirse al Consorcio Metropolitano de Transportes Espaciales (CMTE), que describimos
a continuación. Los planetas están dispuestos en forma de fila, con el planeta Gliese en un
extremo. En cada uno de los planetas hay m naves espaciales (1 ≤ m ≤ 10000), cada una de
las cuales tiene una capacidad de salto hiperespacial que le permite hacer una ruta de viaje
que le acerca a Gliese un número determinado de planetas. Por normativa galáctica (y por un
tema de impuestos demasiado complicado de explicar) en todos los planetas hay los mismos
tipos de naves, con la misma capacidad de salto; asimismo, ninguna de estas nave tiene una
capacidad de salto superior a 15 planetas.
Eres un habitante de un pequeño planeta, situado a n planetas de distancia de Gliese (n ≤
1050 ) y, adivina, trabajas allı́. Has comprado un abono interplanetario, con lo que puedes
viajar libremente por toda la galaxia. Como sabrás, hay muchas formas de llegar a tu destino,
y el único lı́mite que te pones es no volver atrás. Te gusta la variedad, ası́ que has decidido
que cada dı́a tomarás una ruta diferente para ir al trabajo. Evidentemente llegará algún dı́a
en el que hayas tomado todas las rutas posibles y tengas que repetir. ¿Qué dı́a del año será?
Recuerda que el año galáctico tiene 10007 dı́as, que van del 0 al 10006. Dos rutas se consideran
diferentes si tomas alguna nave diferente en algún planeta.
Por ejemplo, supón que vives a 3 planetas de distancia, y que la flota en cada planeta está compuesta de tres naves: dos que tienen una capacidad de salto de 2 planetas (A y B), y una con
capacidad de salto de 1 planeta (C). Entonces, las rutas diferentes que tienes son:
1. AC (primero recorres dos planetas y luego uno, tomando primero la nave A)
2. BC (igual, pero primero tomas la nave B)
3. CA
4. CB
5. CCC
Es decir, 5 rutas diferentes.
Entrada
La primera lı́nea consiste en dos números, n y m, 1 ≤ n ≤ 1050 , 1 ≤ m ≤ 10000. Ten en
cuenta que para valores muy grandes de n, con un entero de 32 o 64 bits no tendrás suficiente,
y puede que necesites guardarlo en un string. A continuación, una lı́nea con m enteros, todos
mayores que 0 y menores o iguales a 15. Cada entero representa la capacidad de salto de una
de las naves espaciales presentes en cada planeta del extrarradio de Gliese.
Salida
Un único entero: el número de rutas posibles para ir al trabajo, módulo 10007.
Puntuación
(10 puntos) Resolver varios casos donde m = 1, n ≤ 1018 .
(40 puntos) Resolver varios casos donde m ≤ 10, n ≤ 10000.
(50 puntos) Resolver varios casos de todo tipo.
Ejemplo de entrada
Ejemplo de salida
3 3
2 1 2
5
Prueba: Concurso on-line 11, OIE-09
Autor: Lander Ramos, Enric S. Cusell

Documentos relacionados