|
問題 小町覆面算
単位分数が1/nとなる1から9までの数を1回ずつ使った分数を求めよ。
ただし、nは2から20までの数とする。
たとえば、6729/13458は1/2なので、求める答えのひとつである。
考察
1/n=m/(mn)を考える。
1から9までの数を1回ずつ使うので、分子のmは4桁の数、分母のmnは5桁の数である。
n=2の場合、
m=1234として、1234/(1234*2)=1234/2468より、
1234と2468とで、1から9までの数を1回ずつ使っているかどうか確認する。
次に、m=1235として、1235/(1235*2)=1235/2470
次に、m=1236として、1236/(1236*2)=1236/2472
:
(終り)
DIM F(0 TO 9) !1から9までの数
FOR N=2 TO 20
PRINT "N=";N
FOR M=1234 TO 9876 !4桁の数
MAT F=ZER
LET F(0)=1 !使用中とする
LET t=M
FOR i=1 TO 4 !10進法4桁
LET w=MOD(t,10)
IF F(w)=1 THEN EXIT FOR !既に使用済み
LET F(w)=1 !使用中とする
LET t=INT(t/10)
NEXT i
IF i>4 THEN !各桁が異なる4桁の数なら
!!!PRINT M !debug
LET t=M*N
IF t>=12345 AND t<=98765 THEN !5桁の数なら
FOR i=1 TO 5
LET w=MOD(t,10)
IF F(w)=1 THEN EXIT FOR
LET F(w)=1
LET t=INT(t/10)
NEXT i
IF i>5 THEN !各桁が異なる5桁の数なら
PRINT M; "/"; M*N !題意を満たす
END IF
END IF
END IF
NEXT M
PRINT
NEXT N
END
|
|