Está en la página 1de 10

SI169 - Algoritmos Avanzados Prctica Dirigida N 1 Anlisis de Tiempos Ciclo: 2010-2 Seccin: A403, A404 Profesores: Enrique Huamn,

, Ral Coaguila

EJERCICIO 1: Cada vez que tengo que comprar algo, me gusta evaluar la calidad y el precio. Usualmente, a mayor calidad, mayor precio. Si en caso necesitara escoger entre n productos. Busco siempre el producto cuyo precio sea el segundo mayor (es un balance entre precio y calidad). Sin embargo, cuando tengo muchos elementos de dnde escoger me puedo demorar mucho. Por ello, tienes que hacer un programa que responda cul es el segundo mayor. Entrada: La primera lnea representa el nmero de casos a evaluar k (0 k 100). Luego, las siguientes k lneas representan un caso cada una. Cada caso comienza con el nmero de productos n (2 n 500). La lnea termina con n nmeros que representan los precios de cada producto. No hay dos precios iguales en un mismo caso. Salida: Por cada caso imprimir una lnea con dos nmeros representando la posicin del elemento escogido y el precio a pagar redondeado a dos decimales. Ejemplo de Entrada 4 5 8.50 4 5.63 3.99 6.56 15 2.99 3.99 1.99 5.65 4.65 1 2 3 4 5 6.85 5.2 2.3 2.54 1.2 4 2.0 2.5 1.5 1.0 7 7 6 5 4 3 2 1

Ejemplo de Salida 5 4 2 2 6.56 5.65 2.00 6.00

EJERCICIO 2: La serie Fibonacci es muy conocida. Los dos primeros elementos de la serie son el 0 y 1. Los siguientes elementos se originan como consecuencia de la suma de los dos anteriores. F(n) = F(n-1) + F(n-2) F(0) = 0 y F(1) = 1 Por lo tanto tenemos la siguiente serie: 0,1,1,2,3,5,8,13,21,34,55,89,144, Escriba un programa que imprima los n nmeros de la serie Fibonacci Entrada: La entrada consiste en un valor n (0 n 40) el cual indica la cantidad de elementos que se imprimirn de la serie Fibonacci. El imput termina cuando n = 0. Salida: Por cada elemento n se imprimar la serie Fibonacci conformada por n elementos. Ejemplo de Entrada 2 1 10 5 0 Ejemplo de Salida 0,1 0 0,1,1,2,3,5,8,13,21,34 0,1,1,2,3

EJERCICIO 3: Dado un grupo de m nmeros. Encontrar el nmero ms repetido si sabe que los nmeros estn en el rango de 0 a n. Entrada: Cada caso comienza con la cantidad de nmeros en el grupo m (1 m 50,000) y el nmero mximo n (1 n 100). Luego le siguen los m nmeros del grupo, cada uno entre 0 y n. La ltima lnea tiene m = 0 y n = 0. Esta lnea no debe procesarse. Salida: Por cada caso imprimir una lnea con el nmero ms repetido. Si en caso hay un empate imprimir No se puede determinar al mayor. Ejemplo de Entrada 25 2 0 0 0 1 2 1 2 1 2 0 0 0 1 2 1 1 1 1 0 0 0 0 0 0 0 10 10 1 2 3 4 5 6 7 8 9 10 10 12 1 2 3 1 2 3 1 2 3 1 0 0 Ejemplo de Salida 0 No se puede determinar al mayor. 1

EJERCICIO 4: Calcular el MCD de 2 nmeros mediante el algoritmo de Euclides. Por ejemplo: Sean los nmeros x e y, x > y Sea r es el residuo de x/y. MCD(x,y) = MCD(y,r)

Importante: No se debe usar recursividad para este algoritmo. Entrada: Cada caso comienza con un par de nmeros a y b (1 < a 100), (1 < b 100). El fin de los datos de entrada se dar cuando a=0 y b=0. Salida: Por cada par a y b se debe imprimir el valor del MCD(a,b). Ejemplo de Entrada 4 8 2366 273 7 17 0 0 Ejemplo de Salida 4 91 1

EJERCICIO 5: El mtodo ms antiguo para encriptar es el siguiente: En vez de cada letra del abecedario se coloca la letra + n. As por ejemplo, si n = 5, en vez de a ponemos una f, en vez de b una g y as. En el caso que la suma cause que pasemos a la z comenzamos con la a de nuevo. Por ejemplo, para n = 3, wxyz pasara a ser zabc' Haga un ejercicio que permita ingresar un texto y n y devuelva el texto encriptado en este mtodo. Entrada: La primera lnea contiene el nmero de casos k. Las k siguientes lneas contienen la letra n (0 n 24) y luego una palabra. La palabra contiene letras entre la a y la z (sin contar la y en minsculas). El tamao mximo de una palabra son 80 caracteres. Salida: Por cada caso imprimir una lnea con la palabra encriptada. Ejemplo de Entrada 4 4 3 6 1

abcd wxyz asdfq pool

Ejemplo de Salida efgh zabc gyjlw qppm

EJERCICIO 6: Usted tiene la ardua labor de ordenar un conjunto de datos, y conoce una serie de algoritmos. Quick Sort, Merge Sort, Heap Sorte, Bubble Sort, Insetion Sort, Selection Sort, etc. Sin embargo, para esta ocasin el tiempo y la memoria necesaria para poder ordenar los datos NO IMPORTA. Entrada: La primera lnea contiene un nmero n (0 n < 100000) el cual indica la cantidad de datos que deber ordenar. Los siguientes n nmeros a ordenar separados por un espacio. (Todos lo n nmeros son diferentes). El input termina cuando n es igual a 0 Salida: La salida consistir en los n nmeros ordenados. Ejemplo de Entrada 5 14 8 6 10 2 15 13 -1 54 100 2 45 24 21 -100 0 -5 -4 98 1 12 2 5 3 0 Ejemplo de Salida 2 6 8 10 14 -100 -5 -4 -1 0 1 2 12 13 21 24 45 54 98 100 3 5

EJERCICIO 7: Sea la funcin recursiva: F(n) para todo n > 0 Con F(1) = 1. y F(i) = F(i-1) * 2 + 3 Haga un programa que imprima F(n). Entrada: Cada lnea contiene un nmero n (1 n 30). La ltima lnea contiene un 0 que no debe procesarse. Salida: Por cada caso imprimir una lnea con F(n) Ejemplo de Entrada 1 2 3 4 5 11 25 Ejemplo de Salida 1 5 13 29 61 4093 67108861

EJERCICIO 8: Supongamos que usted tiene una lista de millones de datos y debe encontrar un elemento con la menor cantidad de bsquedas posibles. Usted solo conoce el algoritmo de bsqueda binaria. Y debe encontrar la menor cantidad de operaciones para poder encontrar la respuesta. Es importante resaltar que en caso la lista de nmeros, tenga una cantidad par de elementos, el elemento intermedio a escoger ser considerado el anterior de la mitad de la lista. Por ejemplo: Para 9 elementos se escoger el elemento #5 Para 8 elementos se escoger el elemento #4. Entrada: La primera lnea contiene dos valores x y n. ( x es cualquier valor del tipo Integer) y (1 < n < 1000). La siguiente lnea contiene un conjunto de n nmeros ordenados. El nmero x puede o no existir en la lnea especificada. La entrada de datos termina cuando x=0 y n=0 Salida: La salida consistir en la cantidad de pasos que se tomaron para poder encontrar el nmero x en la lista. En caso no se encontrar el nmero x se deber imprimir NA. Ejemplo de Entrada 2 10 -1 0 1 2 3 4 5 6 7 8 3 4 1 5 9 10 0 8 0 1 2 3 4 5 6 7 0 0 Ejemplo de Salida 4 NA 3

EJERCICIO 9:

Imprima un cuadro de las siguientes especificaciones. Entrada: Cada caso incluye un nmero n impar (1 n 99) Salida: Si n = 1, imprima una x. Para n > 1 imprima un cuadro como se muestra en los ejemplos. El cuadro tiene n caracteres de alto y de largo. Las esquinas con * y las paredes son - o | segn corresponda a paredes de techo/piso o paredes de los costados. En el centro del cuadro debe haber una x. Ejemplo de Entrada 1 3 5 11 0 Ejemplo de Salida

x *-* |x| *-* *---* | | | x | | | *---* *---------* | | | | | | | | | x | | | | | | | | | *---------*

EJERCICIO 10: Usted debe hallar todos los divisores de un elemento n. Una vez que encuentre los divisores debe indicar cuntos de ellos son nmeros primos. Importante: el nmero 1 no es considerado como primo. Entrada: La entrada consiste en un nmero n (2 n 1000000). La entrada termina cuando n = 0. Salida: La primera lnea de la salida consiste en la enumeracin de los divisores de n separados por comas. La segunda lnea presenta la cantidad de nmeros primos encontrados entre los divisores de n. Finalmente se imprime una lnea con los caracteres -.-. Ejemplo de Entrada 9 24 10 17 30 0 Ejemplo de Salida 1,3,9 1 -.1,2,3,4,6,8,12,24 2 -.1,2,5,10 2 -.1,17 -.1,2,3,5,6,10,15,30 3 -.-

También podría gustarte