Tarea 1 de Diseño de Algoritmos

Trimestre 2012 Invierno
Entrega: 3 de febrero de 2012 a las 22:00.

Problema 1: Definiremos a los naturales como secuencias de paréntesis anidados: el 1 se escribirá (), el 2 se escribirá (()), etc. Además, las secuencias de paréntesis anidados que aparezcan concatenadas representarán sumas, por ejemplo (())() significa 2+1. Escriba un programa llamado parsumZZ (donde ZZ es la clave de dos dígitos asignada por el profesor) que determine el valor de una secuencia de paréntesis anidados. Su programa debe leer un renglón que consiste únicamente de paréntesis y debe generar como salida el valor de la secuencia. Por ejemplo, si la entrada es  (())() entonces la salida debe ser 3. Puede suponer que la entrada siempre será correcta.

Ejemplo de entrada
Ejemplo de salida
(())()
3

Problema 2: Los números de Sylvester se definen de la siguiente manera: S[0] = 2 y S[N] = S[N-1](S[N-1] - 1) + 1. Escriba un programa llamado sylvesZZ (donde ZZ es la clave de dos dígitos asignada por el profesor) que lea dos enteros N, M y que calcule el N-ésimo número de Sylvester módulo M (es decir S[N] mod M). Por ejemplo si N = 3 y M = 5 entonces su programa debe calcular S[3] mod 5 = 43 mod 5 = 3. Puede suponer que 0 <= N, M <= 1000.

Ejemplo de entrada
Ejemplo de salida
3 5
3

Notas: Sus 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.