(Python)
from functools import lru_cache
from itertools import product
def ispal(s): return s == s[::-1]
@lru_cache(maxsize=2*10**7)
def f(b): # factorizations of binary string b
factorizations = int(len(b) >= 2 and ispal(b))
for i in range(2, len(b)-1, 2):
factorizations += ispal(b[:i]) * f(b[i:])
if factorizations >= 2: return 2 # short circuit on condition
return factorizations
def a(n):
return 2*sum(f("0"+"".join(b))==1 for b in product("01", repeat=2*n-1))
|