# IAL-501 (Prof. Dr. Silvio do Lago Pereira)

from util import *

#-----------------------------------------------------------
# Exemplo 1
#-----------------------------------------------------------

def termial(n):
    sat(s0=True)
    s = 0
    i = 0
    sat()
    while i<n:
        i += 1
        s += i
        sat()
    return s

#-----------------------------------------------------------
# Exercicio 2
#-----------------------------------------------------------

def maxint(n):
    sat(s0=True)
    s = 0
    i = 0
    sat()
    while i<n:
        s += 2**i
        i += 1
        sat()
    return s

#-----------------------------------------------------------
# Exercicio 3
#-----------------------------------------------------------

def quadrado(n):
    sat(s0=True)
    s = 0
    i = 0
    sat()
    while i<n:
        s += 2*i+1
        i += 1
        sat()
    return s

#-----------------------------------------------------------
# Exemplo 3
#-----------------------------------------------------------

def media(v):
    sat(s0=True)
    n = len(v)
    s = 0
    i = 0
    sat()
    while i<n:
        s += v[i]
        i += 1
        sat()
    m = s/n
    sat()
    return m

#-----------------------------------------------------------
# Exemplo 4
#-----------------------------------------------------------

def tr(n):
    if n==0: return 0
    return tr(n-1) + n

#-----------------------------------------------------------
# Exercicio 9
#-----------------------------------------------------------

def mir(n):
    if n==1: return 1
    return mir(n-1) + 2**(n-1)

#-----------------------------------------------------------
# Exercicio 11
#-----------------------------------------------------------

def qr(n):
    if n==0: return 0
    return qr(n-1) + (2*n-1)

#-----------------------------------------------------------
# Exercicio 13
#-----------------------------------------------------------

def mr(v,n):
    if n==1: return v[0]
    return (mr(v,n-1)*(n-1)+v[n-1])/n



