Tarea 6 de Diseño de Algoritmos
Trimestre 2013 Otoño
Entrega: 9 de octubre de 2013 a las 22:00.
Problema 1:
Sean A y B dos enteros
positivos con A < B. Considere la función recursiva definida
de la siguiente forma: F(N) = B-N para 0 <= N < B y F(N) =
F(N-A)
+
F(N-B) para N >= B. Diseña un
algoritmo recursivo que
encuentre el valor
de F(N). Por ejemplo, si A = 1 y B = 2 entonces F(0) = 2, F(1) = 1,
F(2) = F(2-1) + F(2-2), etc. Escribe un programa llamado lucasrZZ
(donde ZZ es una clave
de
dos
dígitos asignada por el profesor) basado en tu algoritmo
que acepte como entrada tres números enteros A, B y N y que
escriba como salida el valor de F(N). De nuevo, si la entrada
fuera 1 2 5
entonces la salida debe ser 11.
Puedes suponer que 0 < A < B <= 1,000 y que 0 <= N <=
100. Nota: Como F(N) puede
llegar a
ser un número muy grande deberás escribir en la salida el
valor de F(N) módulo 1,000,000.
Ejemplo de
entrada
|
Ejemplo de
salida
|
1 2 5
|
11
|
Problema 2: Diseña un
algoritmo con memoización que encuentre el valor
de F(N) del problema anterior. Escribe un programa llamado lucasmZZ
(donde ZZ es una clave
de
dos
dígitos asignada por el profesor) basado en tu algoritmo
que acepte como entrada tres números enteros A, B y N y que
escriba como salida el valor de F(N). De nuevo, si la entrada
fuera 1 2 5
entonces la salida debe ser 11.
Puedes suponer que 0 < A < B <= 1,000 y que 0 <= N <=
1,000,000. Nota: Como F(N)
puede llegar a
ser un número muy grande deberás escribir en la salida el
valor de F(N) módulo 1,000,000.
Ejemplo de
entrada |
Ejemplo de
salida |
1 2 5
|
11
|
Notas: Tus programas no
deben leer ni escribir nada adicional a lo que se indica en el
enunciado. El tiempo de ejecución de sus algoritmos será considerado
como parte de la evaluación.