|
問題(覆面算)
RSTUV+SSTUV+TTTUV+UUUUV+VVVVV=XXYYZZ
R,S,T,U,V,X,Y,Zは、0から9までの異なる整数が入ります。
RSTUV
SSTUV
TTTUV
UUUUV
+ VVVVV
---------
XXYYZZ
考察
左辺
第1項 10000r+1000s+100t+10u+v
第2項 11000s+100t+10u+v
第3項 11100t+10u+v
第4項 11110u+v
第5項 11111v
これより、10000r+12000s+11300t+11140u+11115v
右辺
110000x+1100y+11z
となる不定方程式を考える。
一の位に着目して、
zは、mod(5v,10)=z(5の倍数の一の位)なので、0または5
xは、先頭の数字 かつ 繰り上げに注意して、4通り
yは、xと0 または xと5(0を含む) を除いた、それぞれ8通り
したがって、2×4×8=64通り
(x,y,z)=(3,6,0)のとき、題意を満たす。
(終わり)
DATA 5
DATA 10000,12000,11300,11140,11115 !係数
READ M
DIM A(M)
MAT READ A !左辺
DIM XX(M) !解
PUBLIC NUMERIC C !解の個数
FOR Z=0 TO 9 STEP 5
FOR X=1 TO 4
!IF (X-Z)<>0 THEN
FOR Y=0 TO 9
IF (Y-X)*(Y-Z)<>0 THEN
LET T=110000*X+1100*Y+11*Z !右辺
PRINT "T=";T
LET C=0
CALL SolveEqu(1,T, M,A,XX)
PRINT C;"通り"
PRINT
END IF
NEXT Y
!END IF
NEXT X
NEXT Z
END
EXTERNAL SUB SolveEqu(p,T, M,A(),X()) !不定方程式 A[1]x[1]+A[2]x[2]+ … +A[m]x[m]=T を解く
!!FOR i=0 TO INT(T/A(p)) !T=Ax+By+ … +Cz≧Axより、0≦x≦[T/A]
FOR i=0 TO 9 !0≦x[k]≦9
LET X(p)=i !x=i
LET W=T-A(p)*i !残り
IF W>0 AND p<M THEN !m種類まで(深さ優先)
CALL SolveEqu(p+1,W, M,A,X) !次の変数y,…,zへ
ELSEIF W=0 THEN !ここまでの結果を得る
LET C=C+1 !個数
PRINT "No.";C
FOR J=1 TO p !解 x[i]
PRINT X(J);
NEXT J
FOR J=p+1 TO M
PRINT " 0";
NEXT J
PRINT
END IF
NEXT i
END SUB
|
|