Presque toutes les fonctions peuvent être exprimées comme un polynôme avec des termes infinis.
Par exemple, e^x = 1 + x + x^2/2! + x^3/3! + x^4/4! + ...
Par exemple, sin(x) = x - x^3/3! + x^5/5! - x^7/7! + ...
Les coefficients des n
termes -th forment une séquence, et la fonction correspondante est appelée la fonction génératrice de la séquence.
Les coefficients des n
-èmes termes forment une séquence.
Souvent, le n
-ème terme aurait un dénominateur de n!
. Par conséquent, nous multiplions le coefficient par n!
pour obtenir une autre séquence, dont la fonction de génération exponentielle serait la fonction d'origine.
Par exemple, la séquence dont la fonction de génération exponentielle est e^x
serait 1,1,1,1,...
.
Par exemple, la séquence dont la fonction de génération exponentielle est sin(x)
serait 0,1,0,-1,0,1,0,-1,...
.
Tâche
Votre tâche consiste à trouver le n
-ème terme de la séquence dont la fonction de génération exponentielle est tan(x)
.
Cas de test
n result
0 0
1 1
2 0
3 2
4 0
5 16
6 0
7 272
8 0
9 7936
10 0
11 353792
12 0
13 22368256
14 0
15 1903757312
16 0
17 209865342976
18 0
19 29088885112832
20 0
21 4951498053124096
22 0
23 1015423886506852352
24 0
25 246921480190207983616
26 0
(Copié d' ici .) (Attention: le 0
-ème terme est différent)
Exemple d'implémentation
# copied from https://github.com/Mego/Seriously/blob/v2.0/SeriouslyCommands.py#L16
def memoized(f):
memo = {}
def m_fun(*args):
if args in memo:
return memo[args]
else:
res = f(*args)
memo[args] = res
return res
return m_fun
# copied from https://github.com/Mego/Seriously/blob/v2.0/SeriouslyCommands.py#L169
@memoized
def binomial(n,r):
if r > n:
return 0
elif r==n:
return 1
res = 1
i = 1
while i<=r:
res *= (n+1-i)
res /= i
i+=1
return int(res)
# 2*u(n+1) = Sum_{k=0..n} binomial(n, k)*u(k)*u(n-k)
# from A000111
@memoized
def u(n):
if n<0: return 0
if n==0: return 1
if n==1: return 1
return sum([binomial(n-1,k)*u(k)*u(n-1-k) for k in range(n)])//2
def t(n):
if n%2 == 0: return 0
return u(n)
print('\n'.join([str(x) + ' ' + str(t(x)) for x in range(26)]))
Les références
- Générer une fonction sur Wikipédia
- Fonction de génération exponentielle sur Wikipédia
- Exemple de fonction de génération exponentielle sur Wikipedia
- Génération d'une fonction sur MathWorld
- Fonction de génération exponentielle sur MathWorld
- Série Taylor sur Wikipédia
- Dérivation des 9 premiers termes de la séquence requise
- OEIS obligatoire A009006 (Notez que le
0
-ème terme est différent) - Algorithme
- OEIS A000111: numéros haut / bas