Una palabra formada por letras minúsculas (las 26 del alfabeto inglés, entre ‘a’ y ‘z’, sin acentos) puede ser codificada usando dígitos de la manera siguiente: reemplazamos cada ‘a’ por “1”, cada ‘b’ por “2”, …, cada ‘i’ por “9”, cada ‘j’ por “10”, …, cada ‘s’ por “19”, cada ‘t’ por “20”, …, y cada ‘z’ por “26”. Así, por ejemplo, el código de la palabra “pan” sería “16114”.
Lamentablemente, esta codificación en general es ambigua, puesto que más de una palabra puede compartir el mismo código. Siguiendo con el ejemplo, tanto “afan”, como “afaad”, como alguna otra palabra (con o sin sentido) también tendría código “16114”. Sin embargo, hay códigos que son inambiguos. Por ejemplo, “29” sólo puede ser el código de “bi”, y “1010” sólo puede ser el código de “jj”.
Vuestra tarea es hacer un programa que escriba los primeros códigos de dígitos.
La entrada consiste en un natural , seguido de un carácter , seguido de un natural .
Vuestro programa debe escribir, en orden y uno por línea, los primeros códigos de dígitos. Si es una ‘t’, debéis escribir los primeros de todos los códigos, ambiguos o no. Si es una ‘i’, debéis escribir los primeros códigos inambiguos. Podéis suponer que siempre estará entre 1 y el número de códigos totales o inambiguos, según sea el caso.
Este problema tiene juegos de prueba donde la salida puede ser muy
grande
(
líneas). Si programas en C++, usa "\n" en vez de
endl para escribir el salto de línea; en caso contrario, tu
programa no tendrá tiempo de escribir toda la salida en el entorno en el
que el juez se ejecuta.
TestA:
Casos donde está entre 1 y 5, es ‘t’, y es exactamente el número total de códigos de dígitos.
TestB:
Casos donde está entre 1 y 5, es ‘i’, y es exactamente el número de códigos inambiguos de dígitos.
TestC:
Casos donde está entre 1 y 8, es ‘i’ o ‘t’, y es como mucho .
Input
2 t 10
Output
10 11 12 13 14 15 16 17 18 19
Input
2 i 8
Output
10 20 27 28 29 31 32 33
Input
5 i 15
Output
10101 10102 10103 10104 10105 10106 10107 10108 10109 10110 10120 10201 10202 10203 10204