小学奥数读本(三年级),P133第12题。
用一到八,八个数,组成一道除法算式:口口口口÷口=口口口
这题有两个答案:
453*6=2718
582*3=1746
用pascal编程解决,解法一:
1 var 2 i,j:longint; 3 s:set of char; 4 st:string; 5 begin 6 for i:=123 to 987 do 7 for j:=1 to 8 do begin 8 s:=[]; 9 str(i,st); 10 s += [st[1]]+[st[2]]+[st[3]]; 11 str(j,st); 12 s += [st[1]]; 13 if(i*j>=1234) then begin 14 str(i*j,st); 15 s += [st[1]]+[st[2]]+[st[3]]+[st[4]]; 16 end; 17 if( s = ['1'..'8'] ) then writeln(i,' ',j,' ',i*j); 18 end; 19 end.
解法二:
1 var 2 i,j,k:longint; 3 s:set of 0..8; 4 begin 5 for i:=123 to 987 do 6 for j:=1 to 8 do begin 7 s:=[]; 8 s += [j]; 9 k:=i; 10 while(k>0) do begin 11 s += [k mod 10]; 12 k := k div 10; 13 end; 14 k:=i*j; 15 while(k>0) do begin 16 s += [k mod 10]; 17 k := k div 10; 18 end; 19 if( s = [1..8] ) then writeln(i,' ',j,' ',i*j); 20 end; 21 end.