import numpy as np
import matplotlib.pyplot as plt

a0 = 1
def a(n) :
    r = a0
    for _ in range(n) :
        r = 1-np.exp(-r)
    return r

# X = np.arange(0,5,0.01)
# plt.plot(X,X)
# Y = [1-np.exp(-x) for x in X]
# plt.plot(X,Y)
# N = [a(k) for k in range(0,12)]
# plt.plot(N[0:-1],N[1:],marker='o')
# plt.show()

def S(n,x) :
    s = 0
    for k in range(n+1) :
        s += a(k)*x**k
    return s

# n = 20    
# X = np.arange(0,2,0.01)
# Y = [S(n,x) for x in X]
# plt.plot(X,Y)
# plt.show()

n = 0
while 2**n<1e5 :
    n += 1
print('n=',n,' et S(0.5)=',S(n,0.5))

p = 0
while a(p+1)>1e-3 :
    p += 1
print('n=',p,' et S(-1)=',S(p,-1))