覆面算

 投稿者:山中和義  投稿日:2016年 3月21日(月)15時46分16秒
  問題(覆面算)
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


 

Re: 覆面算

 投稿者:山中和義  投稿日:2016年 3月21日(月)17時29分18秒
  > No.4007[元記事へ]

問題(覆面算)
  KYOTO
+ OSAKA
---------
  TOKYO

答え  101a+9910k+9100o+1000s-9990t+990y=0 より、41373+32040=73413


DATA 5
DATA 101,9910,9100,1000,990 !係数  a,k,o,s,y
READ M
DIM A(M)
MAT READ A !左辺

DIM XX(M) !解
PUBLIC NUMERIC C !解の個数
FOR T=1 TO 9 !右辺
   PRINT "T=";T

   LET C=0
   CALL SolveEqu(1,9990*T, M,A,XX)
   PRINT C;"通り"
   PRINT

NEXT T

END

※サブルーチン部分は、省略します。

 

Re: 覆面算

 投稿者:山中和義  投稿日:2016年 4月 3日(日)07時35分33秒
  > No.4007[元記事へ]

> 問題(覆面算)
> 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
> となる不定方程式を考える。
>

通常は、順列を考えます。


DIM X(1 TO 8) !rstuvxyz  ※
FOR R=0 TO 9 !数字0~9  ※
   LET X(1)=R
   CALL try(2,X)
NEXT R
END
EXTERNAL SUB try(K,X()) !P(10,8)通りの並びを確認する
FOR i=0 TO 9 !数字0~9  ※
   FOR J=1 TO K-1 !未使用なら
      IF i=X(J) THEN EXIT FOR
   NEXT J
   IF J>K-1 THEN
      LET X(K)=i !k番目を数字iとする
      IF K=UBOUND(X) THEN !すべて埋まったなら
         IF (10000*X(1)+1000*X(2)+100*X(3)+10*X(4)+X(5)) + &
&                     (11000*X(2)+100*X(3)+10*X(4)+X(5)) + &
&                              (11100*X(3)+10*X(4)+X(5)) + &
&                                      (11110*X(4)+X(5)) + &
&                                           (11111*X(5)) = &
&                        (110000*X(6)+1100*X(7)+11*X(8)) THEN !式が成立するなら  ※
            MAT PRINT X;
         END IF
      ELSE
         CALL try(K+1,X) !次へ
      END IF
   END IF
NEXT i
END SUB

 

戻る