program dig(input,output); label 999; { bad number } var used: array[0..9] of boolean; { digit used? } dig,i, denom, numer, td, tn: integer; { assorted numbers } N : integer; { assigned quotient } begin repeat write('N = '); readln( N ); { only use denominators that are possible solutions - numerator not too big} if (N>=2) and (N<=9) then for denom := 12345 div N to 98766 div N do begin { calculate the appropriate numerator, check numbers } numer := denom * N; td := denom; tn := numer; { for isolating digits } for i := 0 to 9 do used[i] := false; { check digits } for i := 1 to 5 do begin dig := td mod 10; { get one digit } if used[dig] then goto 999; { already used-abort } td := td div 10; used[dig] := true; dig := tn mod 10; { same for numerator } if used[dig] then goto 999; tn := tn div 10; used[dig] := true; end; { for i } { passed check, print it } if numer <= 9999 then write( '0', numer:4, ' / ') else write( numer:5, ' / ' ); { 5-digit number } if denom <= 9999 then writeln( '0', denom:4, ' = ', N:1 ) else writeln( denom:5, ' = ', N:1); 999: end { for denom } else if N <> 0 then writeln('illegal value for N'); until N=0; end.