Este documento presenta 8 problemas de programación para un concurso organizado por ACMChapter Cusco. Cada problema contiene una descripción del problema, las entradas y salidas esperadas, y posibles restricciones. Los problemas cubren temas como simular el movimiento de una oruga, plegar papel para que quepa en una caja, recorrer una espiral numérica, ordenar estudiantes por tamaño, y determinar si un número es libre de cubos. El documento provee múltiples ejemplos de entradas y salidas para cada problema.
Fase 1, Lenguaje algebraico y pensamiento funcional
3er Cuscontest - Prueba
1. ACMCHAPTER CUSCO 2012
Universidad Nacional de San Antonio Abad
del Cusco
Carrera Profesional de Ingeniería Informática y de sistemas
Division I - Masters
“3er Cuscontest ”
4 de Agosto del 2012
Contest Session
Este conjunto de problemas contiene 8 problemas, paginas numeradas del
1 al 10
Organizado por: ACMChapter Cusco
CUSCO – PERU
Página 1
2. PROBLEMA A
HORA DE COMER
Nombre del código del problema: worms
La oruga es una criatura de hábitos regulares, esta se arrastra una distancia a lo largo de
una rama de un árbol, luego se detiene para descansar, si se ha detenido en una hoja,
entonces se convierte en su comida, luego continua su camino recorriendo la misma
distancia que la previa antes de detenerse y repite esta rutina hasta que alcanza o pasa el
fin de la rama.
Considerar a una oruga viajando la longitud de una rama cuyas hojas están espaciadas en
intervalos uniformes.
Dependiendo de la distancia entre sus puntos de descanso la oruga podría comer o no
comer cada hoja.
Siempre hay una hoja al inicio de la rama en el cual es donde la oruga descansa antes de
empezar su recorrido.
Calcular el número de hojas que consumirá en todo su recorrido.
INPUTS.
- La primera línea indica el número de casos de prueba T.
- Las T siguientes líneas son 3 enteros separados por un espacio R, D, H (Rama,
Descanso, Hoja), que indican la longitud de la rama, la longitud de cada tramo que
recorre antes de descansar, y la longitud entre cada par de hojas.
RESTRICCIONES.
- R estará entre 1 y 1000000 (10^6), inclusive.
- D estará entre 1 y 1000, inclusive.
- H estará entre 1 y 1000, inclusive.
OUTPUTS.
- Para cada caso de prueba, imprimir un número indicando la cantidad de hojas que
ha llegado a comer la oruga en todo su trayecto.
Ejemplo de Entrada Ejemplo de Salida
7 3
11 24 2
12 64 1
20 37 2
21 73 1
15 165 48
1000 37 48
1000 73
Página 2
3. PROBLEMA B
PLEGADO DE PAPEL
Nombre del código del problema:paperfold
Tienes una pieza de papel que necesitas plegarlo para que encaje en una caja con una ancho y una
largo dado.
Cada vez que doblas el papel, puedes doblarlo por la mitad ya sea de su largo o de su ancho, pero
sólo puedes doblarlo 8 veces (después de las 8 veces, el papel se pone más denso como para
volverlo a doblar).
Puedes rotar el papel 90 grados si es que de esa forma encajará con menos pliegues, pero el papel
debe encajar en forma plana dentro de la caja.
NOTA:
- después de que el papel es doblado es posible que llegué a tener dimensiones
fraccionarias.
- El papel encajará en la caja aún si una o ambas de sus dimensiones son exactamente las
mismas con las correspondientes dimensiones de la caja.
INPUT.
- La primera línea de código, contiene un número T, que indica el número de casos de
prueba.
- Las siguientes T líneas contienen 4 enteros AnchoPapel, LargoPapel, AnchoCaja, LargoCaja,
todas estas medidas están entre 1 y 10000 inclusive.
OUTPUT.
- Imprimir un número por línea indicando el mínimo número de pliegues que debes hacer al
papel para que encaje en la caja, si es más de 8 entonces imprimir -1.
Ejemplo de Entrada Ejemplo de Salida
6 1
8 11 6 10 4
11 17 6 4 4
11 17 5 4 -1
1000 1000 62 63 0
100 30 60 110 5
1895 6416 401 1000
Página 3
4. PROBLEMA C
Espiral
Nombre del código del problema: espiral
Las espirales toman muchas formas; las principales distinciones que señalan los
astrónomos tienen que ver con la forma de la región central y con el patrón de
los brazos espirales. Suponga que usted tiene una matriz de 5 X 5 que representa
el recorrido de una espiral.
1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9
Usted podría hacer el recorrido de diferentes formas pero en este caso se le pedirá
un recorrido similar al que se le muestra en el cuadrado de arriba en otras
palabras tendrá que buscar la forma de simular el recorrido de una espiral de
varias longitudes que empezara en el extremo superior izquierdo del cuadrado.
Input
Existirán varias líneas de entrada en el archivo de entrada. Cada caso empieza
con un entero n (1<= n <=20) que determinan lasdimensiones de cada cuadrado
donde se representara la espiral. La entrada termina con un caso de prueba donde
n=0.
Output
Para cada caso de prueba usted escribirá “Case #:” donde # es remplazado por el
numero de caso correspondiente, luego en las siguientes n líneas usted tendrá que
escribir nnúmeros separados por espacios que representaran el recorrido de cada
espiral.
Sample Input Output for Sample Input
5 Case 1:
1 1 2 3 4 5
3 16 17 18 19 6
0 15 24 25 20 7
14 23 22 21 8
13 12 11 10 9
Case 2:
1
Case 3:
1 2 3
8 9 4
7 6 5
Página 4
5. PROBLEMA D
Yunza
Nombre del código del problema: yunsa
Por carnavales el profesor Waldo organiza una yunza en la clase, todos los alumnos forman un
circulo alrededor de un árbol. Waldo quiere ordenar los alumnos de tal manera que se minimice la
máxima diferencia de los tamaños entre cada par de alumnos contiguos. Escriba un programa que
devuelva la mayor diferencia de tamaños entre cada par de alumnos contiguos luego de que los
alumnos hayan sido ordenados por Waldo.
ENTRADA.
● La primera línea indica el número de casos de prueba T.
● Para cada caso de prueba se tiene “n” que representa el número de alumnos en la clase,
siguen n líneas, en cada línea un número indicando el tamaño de cada alumno en la clase.
RESTRICCIONES.
● n estará entre 3 y 20, inclusive
● El tamaño de los alumnos estará entre 150 y 210, inclusive.
SALIDA.
● Para cada caso de prueba, imprimir un número en una línea indicando la mayor diferencia
de tamaños entre cada par de alumnos contiguos luego de que los alumnos hayan sido
ordenados.
Página 5
6. Ejemplo de Entrada Ejemplo de Salida
4 5
4 20
180 0
183 10
178
185
3
170
180
190
5
180
180
180
180
180
12
184
165
175
186
192
200
176
192
194
168
205
201
En el primer ejemplo, la yunza está ordenada de esta manera, y sus diferencias están indicadas
entre parentesis. La máxima diferencia para este caso es 7 unidades.
180
(3)/ (5)
183 185
(5) /(7)
178
Waldo los ordena de la siguiente manera (que es la óptima) y obtiene una diferencia máxima de 5
unidades.
180
(5)/ (2)
185 178
(2) /(5)
183
En el segundo ejemplo para todos los casos la diferencia es 20.
Página 6
7. Problema E
NÚMEROS LIBRES DE UN CUBO
Nombre del código del problema: freecube
(1 segundo)
Un numero libre de cubo es un número el cual ninguno de sus divisores es un cubo (un
cubo es el cubo de un entero como 8(2*2*2), 27(3*3*3)). Por tanto los números libres de
cubos son 1,2,3,4,5,6,7,9,10,11,12,13,14,15,17,18, etc (consideraremos 1 como un
número libre de cubo). Por lo tanto la posición de 1 entre los números libres de cubos es 1
la posición de 2 es 2, de 3 es 3 y la posición de 10 es 9. Dado un numero positivo tu
tienes que decir si este es un número libre de cubo y si es verdadero entonces decir su
posición entre los números libres de cubos.
ENTRADA: La primera línea del caso de prueba será el número de casos de prueba
T(1<=T<=100000).Entonces las siguientes T líneas. En cada línea tu buscarás un numero
entero N(1<=N<=1000000).
SALIDA: Para cada línea de entrada, mostrar una línea que contenga “Caso I: ”,donde I
es el número de caso de prueba. Si este no es un número libre de cubo entonces muestra
“No es libre de cubo”. EN caso contrario mostrar su posición entre los números libres de
cubo.
Ejemplo de entrada:
10
1
2
3
4
5
6
7
8
9
10
Ejemplo de salida:
Caso 1: 1
Caso 2: 2
Caso 3: 3
Caso 4: 4
Caso 5: 5
Caso 6: 6
Caso 7: 7
Caso 8: No es libre de cubo
Caso 9: 8
Caso 10: 9
Página 7
8. Problema F
São Paulo
Nombre del código del problema: saopaulo
Existen 4 equipos populares en la región de São Paulo, Corinthians, Palmeiras, Santos y
São Paulo, un grupo de n jugadores de los equipos mencionados fueron convocados a
una premiación, los jugadores se alinearon en forma aleatoria. Tu eres el jefe de
premiación y quieres alinear a los jugadores de tal manera que no existan 3 jugadores
consecutivos que pertenezcan al mismo equipo y necesites realizar intercambios entre
jugadores de tal manera de minimizar el número de jugadores intercambiados (los
intercambios pueden ser entre cualquier dos jugadores en la premiación).
Input
* numero indicando la cantidad de casos de prueba
Por cada caso de prueba
* n el numero de jugadores convocados 1 <= n <= 20
* una cadena de caracteres “S” de tamaño n, cada caracter S[i] pueden ser una de las
siguientes letras C, P, N, S, indicando los equipos a los que representa cada jugador
(Corinthians, Palmeiras, Santos y São Paulo respectivamente).
Output:
Por cada caso de prueba una línea indicando el número mínimo de jugadores que fueron
intercambiados de su posición inicial para alinear a los jugadores, en caso sea imposible
la alineación escriba -1.
Ejemplo de Entrada Ejemplo de Salida
4 4
8 -1
CCCCCCPN 0
3 2
CCC
2
NC
13
CNSSCSSSPPSPP
En el primer caso de prueba podemos cambiar un jugador de Corinthians por uno del
Palmeiras y un un jugador de Santos por otro del Corinthians de tal manera que el string
quede así CCPCCNCC, en total fuerón 4 jugadores intercambiados.
En el segundo caso de prueba siempre van a existir 3 jugadores consecutivos del mismo
equipo por eso la respuesta es -1.
Página 8
9. Problema G
Encuentra a los terroristas
Nombre del código del problema: findterrorist
El primer ministro y su Consejo de Ministros, estan tratando de
encontrar todos las posibles posiciones de los terroristas. En su
sueño, el primer ministro recivio un mensaje de Dios en el cual la
respuesta al problema de los terroristas son números(por ejemplo
X) en el cual el número de factores de X (incluyendo 1 y X) es
primo. Estos números suspuestamente contienen las posiciones
encriptadas de los terroristas. Como el consejo de ministros no
cuenta con programadores, el primer ministro necesita de tú ayuda.
Nota:- 1 no es considerado como un número primo.
Entrada
La primera linea de entrada contendrá un entero T <= 20 denotando
el número de casos de prueba.
Las T siguientes líneas, una por caso de prueba.
Cada caso de prueba estará en una linea de la forma “L H” donde L
y H son números enteros positivos inclusive 0.
Salida
Una linea por cada caso de prueba, la linea contendrá una lista de
enteros entre L y H, los cuales su número de factores sea un
número primo. En caso de que no exista ningún entero que cumpla
esta condición entonces mostrar -1.
Ejemplo de Entrada
3
1 1
1 2
2 5
Ejemplo de Salida
-1
2
2 3 4 5
Página 9
10. Problema H
Elegir y Dividir
Nombre del código del problema: choose
(1 Segundo)
El coeficiente binomial C(n,m) está definido como:
C(m,n) = m!/n!(m-n)!
Dados cuatro números naturales p,q,r,s calcular el resultado de
dividir C(p,q) por C(r,s).
Entrada
La entrada consiste de una secuencia de lineas. Cada linea
contiene cuatro números enteros no negativos p,q,r y s,
respectivamente separados por un espacio en blanco. Todos los
números serán menores que 1000 con p>=q y r>=s.
Salida
Para cada linea de entrada, mostrar una linea que contenga un
número real con 5 dígitos de precisión en la fracción, dados los
números descritos arriba. El resultado no sera m
or que 2*10^289.Ejemplo de Entrada
10 5 14 9
93 45 84 59
145 95 143 92
995 487 996 488
2000 1000 1999 999
9998 4999 9996 4998
Ejemplo de salida
0.12587
505606.46055
1.28223
0.48996
2.00000
3.99960
Página
10