CJam(69字节)
]qi:X,{1e|,:):N{N\f{1$%!*}W$.*:+}%1$W%.*:+N,/+}/W\+_1,*X=\_W%.*:+-Y/z
在线演示
说明
基本思想是实现OEIS中描述的生成功能。输入是一个令人讨厌的特殊情况,但是我做的最终调整最终导致产生− 1,因此z(对于绝对值)将其整理掉。这是这里最奇怪的把戏。0− 1ž
.*:+
重复三遍,如果将其提取为,看起来可以节省一个字节{.*:+}:F~
。但是,这与特殊情况中断,因为它根本不执行外部循环。0
我们对A000081使用辅助生成函数,其项具有递归性
a[0] = 0
a[1] = 1
For n >= 1, a[n+1] = (sum_{k=1}^n a[n-k+1] * sum_{d|k} d * a[d]) / n
∑d| ķd× a [ d]dk % d == 0 ? d : 0
一种.*
一种ķ一种ñN\f{1$%!*}W$.*:+
M
a [ n + 1 ] = 1ñ∑ķ = 1ña [ n − k + 1 ] × M[ k ]
一种中号1个ñn + 1一种
qi:X,{ ,:):N{N\f{1$%!*}W$.*:+}%1$W%.*:+N,/+}/
辅助生成函数的要点由A000055的公式部分给出:
G.f.: A(x) = 1 + T(x) - T^2(x)/2 + T(x^2)/2,
where T(x) = x + x^2 + 2*x^3 + ... is the g.f. for A000081.
一种
[ x = 0 ] + a [ x ] + 12( a [ x / 2 ] − ∑我= 0ña [ i ] × a [ n - i ] )
一个[ x / 2 ]X1,*
X=
0\+
a [ 0 ] = 0X= 0W\+
− 2 a [ x ] + ∑ñ我= 0a [ i ] × a [ n - i ]2a [ x ]
所以我们已经解释了
qi:X,{ ,:):N{N\f{1$%!*}W$.*:+}%1$W%.*:+N,/+}/W\+_1,*X=\_W%.*:+-Y/
1]
ñ= 1
1]qi:X,1>{ ... }/
X= 0一种[-1 1]
0[ x = 0 ]X!+
1e|
一种1个ñ= 0
]qi:X,{ ... /+}/
显然除以零。但是如果我们尝试
]qi:X,{1e| ... /+}/
然后就可以了。我们得到
e# Stack: [] 0
1e| e# Stack: [] 1
,:):N e# Stack: [] [1]
{ e# We only execute this loop once
N\f{1$%!*} e# 1 divides 1, so stack: [] [1]
W$.* e# Remember: if the two arrays supplied to the pointwise operation
e# are not the same length then the values from the longer one are
e# left untouched. Stack: [] [1]
:+ e# Fold over a singleton. Stack: [] 1
}% e# And that was a map, so stack: [] [1]
1$W%.*:+ e# Another [1] [] .*:+, giving the same result: 1
N,/ e# 1 / 1 = 1
+ e# And we append 1 to a giving [1]
恰好产生了我们所需的价值。
X= 0− 1[-1]
(− 1 − 12(- 1 × - 1 ))= - 101个− 11个z