A071314 a(n) is the smallest number that cannot be obtained from the numbers {2^0,2^1,...,2^n} using each number at most once and the operators +, -, *, /. Parentheses are allowed, intermediate fractions are not allowed.
2, 4, 11, 27, 77, 595, 2471, 9643, 51787
Offset: 0
Examples
a(2) = 11 because using {1,2,4} and the four operations we can obtain all the numbers up to 10, for example 10=(4+1)*2, but we cannot obtain 11 in the same way. a(6) <= 595 since the only way to make 595 is: (1 + 16 + 4/8)*(2 + 32), which requires the use of an intermediate fraction 4/8 in the calculation process, which is not allowed. - _Matej Veselovac_, Aug 28 2019 a(8) != 19351 = 1+(2+256)*(((4+16)*(128-8))/32). - _Michael S. Branicky_, Jul 15 2022
Links
Programs
-
Python
def a(n): R = dict() # index of each reachable subset is [card(s)-1][s] for i in range(n+1): R[i] = dict() for i in range(n+1): R[0][(2**i,)] = {2**i} reach = set(2**i for i in range(n+1)) for j in range(1, n+1): for i in range((j+1)//2): for s1 in R[i]: for s2 in R[j-1-i]: if set(s1) & set(s2) == set(): s12 = tuple(sorted(set(s1) | set(s2))) if s12 not in R[len(s12)-1]: R[len(s12)-1][s12] = set() for a in R[i][s1]: for b in R[j-1-i][s2]: allowed = [a+b, a*b, a-b, b-a] if a != 0 and b%a == 0: allowed.append(b//a) if b != 0 and a%b == 0: allowed.append(a//b) R[len(s12)-1][s12].update(allowed) reach.update(allowed) k = 1 while k in reach: k += 1 return k print([a(n) for n in range(6)]) # Michael S. Branicky, Jul 15 2022
Formula
a(n) <= A309886(n+1). - Michael S. Branicky, Jul 15 2022
Extensions
a(8) corrected by Michael S. Branicky, Jul 15 2022
Comments