%I #54 Jul 15 2023 16:56:55
%S 1,1,2,4,10,24,70,192,576,1890,6300,21600,78624,294840,1140480,
%T 4561920,18849600,79968000,348566400,1559376000,7147140000,
%U 33522128640,160745472000,787652812800,3938264064000,20080974513600,104348244639744,552160113120000,2973491173785600,16286186592000000,90678987245246400
%N Divide integers 1..n into two sets, minimizing the difference of their products. This sequence is the smaller product.
%H Max Alekseyev, <a href="/A200743/b200743.txt">Table of n, a(n) for n = 1..140</a> (terms for n=1..35 from Michael S. Branicky)
%F a(n) = A127180(n) - A200744(n) = A200744(n) - A038667(n) = (A127180(n) - A038667(n)) / 2. - _Max Alekseyev_, Jun 18 2022
%e For n=1, we put 1 in one set and the other is empty; with the standard convention for empty products, both products are 1.
%e For n=13, the central pair of divisors of n! are 78975 and 78848. Since neither is divisible by 10, these values cannot be obtained. The next pair of divisors are 79200 = 12*11*10*6*5*2*1 and 78624 = 13*9*8*7*4*3, so a(13) = 78624.
%p a:= proc(n) local l, ll, g, p, i; l:= [i$i=1..n]; ll:= [i!$i=1..n]; g:= proc(m, j, b) local mm, bb, k; if j=1 then m else mm:= m; bb:= b; for k to 2 while (mm<p) do if j=2 or k=2 or k=1 and ll[j-1]*mm>bb then bb:= max(bb, g(mm, j-1, bb)) fi; mm:= mm*l[j] od; bb fi end; Digits:= 700; p:= ceil(sqrt(ll[n])); g(1, nops(l), 1) end: seq(a(n), n=1..23); # _Alois P. Heinz_, Nov 22 2011
%t a[n_] := a[n] = Module[{s, t}, {s, t} = MinimalBy[{#, Complement[Range[n], #]}& /@ Subsets[Range[n]], Abs[Times @@ #[[1]] - Times @@ #[[2]]]&][[1]]; Min[Times @@ s, Times @@ t]];
%t Table[Print[n, " ", a[n]]; a[n], {n, 1, 25}] (* _Jean-François Alcover_, Nov 03 2020 *)
%o (Python)
%o from itertools import combinations
%o def prod(l):
%o t=1
%o for x in l:
%o t *= x
%o return t
%o def a200743(n):
%o nums = list(range(1,n+1))
%o widths = combinations(nums,n//2)
%o dimensions = [(prod(width),prod(x for x in nums if x not in width)) for width in widths]
%o best = min(dimensions,key=lambda x:max(*x)-min(*x))
%o return min(best)
%o # _Christian Perfect_, Feb 04 2015
%o (Python)
%o from math import prod, factorial
%o from itertools import combinations
%o def A200743(n):
%o m = factorial(n)
%o return min((abs((p:=prod(d))-m//p),min(p,m//p)) for l in range(n,n//2,-1) for d in combinations(range(1,n+1),l))[1] # _Chai Wah Wu_, Apr 07 2022
%Y Cf. A060776, A038667, A127180, A200744.
%K nonn
%O 1,3
%A _Franklin T. Adams-Watters_, Nov 21 2011
%E a(24)-a(30) from _Alois P. Heinz_, Nov 22 2011
%E a(31) from _Michael S. Branicky_, May 21 2021