%I #9 Dec 04 2024 20:38:24
%S 10,10,100011,1100,10,100110,1001,111000,100000000011111111,10,1001,
%T 101100,1001,101010,100110,11110000,100011,100000000111111110,110010,
%U 1100,101010,1100,11010100,111000,1100,101010
%N Smallest multiple of n having an equal number of ones and zeros and no other digits.
%H Robert Israel, <a href="/A079793/b079793.txt">Table of n, a(n) for n = 1..890</a>
%p F:= proc(m)
%p uses Optimization;
%p local dmax, dmin, dmax0, cons, obj, i, j, x, r, R;
%p dmin:= max(padic:-ordp(m,2), padic:-ordp(m,5));
%p dmax0:= max(1,2*dmin-1);
%p if dmax0::even then dmax0:= dmax0+1 fi;
%p for dmax from dmax0 to 38 by 2 do
%p x:= 'x':
%p x[dmax]:= 1:
%p cons:= [add((10^i mod m) * x[i], i=dmin..dmax) = r * m,
%p add(x[i],i=dmin..dmax) = (1+dmax)/2,
%p seq(seq(`if`(10^i mod m = 10^j mod m, x[i] >= x[j],NULL), i=dmin..j-1),j=dmin+1..dmax-1) ];
%p obj:= add(10^i * x[i],i=dmin..dmax-1);
%p if dmax = dmin then
%p if dmax = 1 and (10 mod m = 0) then return 10 else next fi fi;
%p R:= traperror(Minimize(obj, cons, assume=nonnegint, binaryvariables = [seq(x[i],i=dmin..dmax-1)],depthlimit=100));
%p if R = "no feasible integer point found; use feasibilitytolerance option to adjust tolerance" then next
%p elif R = lasterror then printf("%s for dmax=%d at m=%d\n",R,dmax,m)
%p else return (R[1]+10^dmax) fi
%p od;
%p FAIL
%p end proc:
%p map(F, [$1..100]); # _Robert Israel_, Dec 04 2024
%K base,nonn
%O 1,1
%A _Amarnath Murthy_, Mar 27 2004
%E Corrected and extended by Mark Hudson (mrmarkhudson(AT)hotmail.com), Aug 12 2004
%E Name clarified by _Robert Israel_, Dec 03 2024