program poging4; function twee(N : integer) : integer; var k,macht : integer; begin macht := 1; for k := 1 to N do macht := macht*2; twee := macht; end; procedure geteld(N : integer); type meer = record B : boolean; S : string; i : integer; end; var macht,k,i,getal : integer; gehad : array of meer; ii,bit,code,kk : integer; uit : string; max : integer; begin macht := twee(N); SetLength(gehad,macht+1); for k := 0 to macht do begin gehad[k].B := false; gehad[k].S := ''; gehad[k].i := 0; end; max := 0; for k := 1 to macht-1 do begin code := k; uit := '2'; getal := 2; ii := 0; for i := 0 to N-1 do begin ii := i; bit := code and 1; if bit = 0 then begin uit := uit + '*2'; getal := getal*2; end else begin uit := uit + '/3'; getal := getal div 3; end; if getal = 0 then Break; code := code shr 1; if code = 0 then Break; end; if not gehad[getal].B then if (getal mod 2 = 1) then begin gehad[getal].B := true; gehad[getal].S := uit; gehad[getal].i := ii+1; end; if getal > max then max := getal; end; kk := 0; for k := 1 to (max div 2) do begin if not gehad[2*k-1].B then Break; kk := k; end; gehad[2].B := true; gehad[2].S := '2'; gehad[2].i := 0; for k := 2 to kk do begin gehad[2*k].B := true; gehad[2*k].S := gehad[k].s + '*2'; gehad[2*k].i := gehad[k].i + 1; end; for k := 1 to 2*kk do begin Writeln(k:3,' = ',gehad[k].S,' (#',gehad[k].i,')') end; end; begin geteld(26); end.