Search All of the Math Forum:
Views expressed in these public forums are not endorsed by
NCTM or The Math Forum.



Re: make 100 by using 1, 7, 7, 7, 7
Posted:
Nov 14, 2007 7:52 AM


Robert Israel schrieb: > Kira Yamato <kirakun@earthlink.net> writes: > >> On 20071113 13:22:13 0500, Robert Israel >> <israel@math.MyUniversitysInitials.ca> said: >> >>> "Benjamin A. Bartsch" <benjamin.a.bartsch@gmail.com> writes: >>> >>>> dangerousgam...@gmail.com schrieb: >>>>> So, using only +, , x, /, and parentheses, and ONLY these numbers: >>>>> >>>>> 1, 7, 7, 7, 7 >>>>> >>>>> how can you make 100? Is there more than one solution? >>>> > (1/7+7)*(7+7) >>>> >>>> Benjamin >>> Yes, and that's the only solution (up to commutativity). >> I'm very curious how you concluded this. Was it by a program that >> tests through all possible combinations? >> >> I tried to write a program too, but I stop when I couldn't quickly find >> a way to list out all possible trees with 7 leaves. > > Here's my search program, written in Maple. > > trees:= proc(S) > option remember; > local oper,SL,L,res,ret,V,W,v,w,R,r; > if nops(S) = 1 then {[op(S),op(S)]} > else > res:= {}; ret:= {}; > for oper in [`+`,``,`/`,`*`] do > for SL in combinat[powerset]({$1..nops(S)}) do > if nops(SL) > 0 and nops(SL) < nops(S) then > L:= sort([seq(S[j],j=SL)]); > R:= sort([seq(S[j],j=({$1..nops(S)} minus SL))]); > V:= trees(L); > W:= trees(R); > for v in V do > for w in W do > if ((oper = `+`) or (oper = `*`)) and (v[1] > w[1]) then next > end if; > try > r:= oper(v[1],w[1]); > catch: next; > end try; > res:= res union {r}; > ret:= ret union {[r, [v[2],oper,w[2]]]}; > end do > end do > end if > end do > end do; > ret > end if > end proc; > >> select(t > (t[1]=100), T); > > {[100, [[[1, /, 7], +, 7], *, [7, +, 7]]]}
Would the program be any simpler if you encoded RPN, that is +,,/,E(nter)? The solution then is:
1E7/7+7E7+*
 Thomas Nordhaus



