Quasi ogni funzione può essere espressa come un polinomio con termini infiniti.
Per esempio, e^x = 1 + x + x^2/2! + x^3/3! + x^4/4! + ...
Per esempio, sin(x) = x - x^3/3! + x^5/5! - x^7/7! + ...
I coefficienti dei ntermini -th formano una sequenza e la funzione corrispondente è chiamata Funzione generatrice della sequenza.
I coefficienti dei n-th termini formano una sequenza.
Spesso, l' nennesimo termine avrebbe un denominatore di n!. Pertanto, moltiplichiamo il coefficiente n!per ottenere un'altra sequenza, la cui funzione generatrice esponenziale sarebbe la funzione originale.
Ad esempio, la sequenza cui funzione esponenziale Generazione è e^xsarebbe 1,1,1,1,....
Ad esempio, la sequenza cui funzione esponenziale Generazione è sin(x)sarebbe 0,1,0,-1,0,1,0,-1,....
Compito
Il tuo compito è quello di trovare l' nennesimo termine della sequenza la cui funzione generatrice esponenziale è tan(x).
Casi 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
(Copiato da qui .) (Attenzione: il 0termine è diverso)
Esempio di implementazione
# 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)]))
Riferimenti
- Generazione di funzioni su Wikipedia
- Funzione di generazione esponenziale su Wikipedia
- Esempio di funzione generatrice esponenziale su Wikipedia
- Generazione di funzioni su MathWorld
- Funzione di generazione esponenziale su MathWorld
- Serie di Taylor su Wikipedia
- Derivazione dei primi 9 termini della sequenza richiesta
- OEIS obbligatorio A009006 (Notare che il
0termine è diverso) - Algoritmo
- OEIS A000111: numeri su / giù




