数字1,2,3の並び

 投稿者:山中和義  投稿日:2016年 4月 7日(木)17時43分41秒
  問題
1,2,3の数字のみを使用して小さい順に、
  1,2,3,11,12,13,21,22,23,31,32,33,111,112,113,・・・・
と並べていくとすると、並び 122333 は何番目に出現するか?
また、122333番目に出現する数字の並びを求めよ。


答え  122333は、3進法の並びとみて、((((1×3+2)×3+2)×3+3)×3+3)×3+3=498番目(ホーナー法)

LET N=122333
LET S=0
LET X$=STR$(N) !3進法の並びとみる
FOR L=1 TO LEN(X$)
   LET S=S*3+VAL(X$(L:L))
NEXT L
PRINT S

!別解
LET N=122333
LET S=0
LET T=N
LET K=0 !k桁目
DO WHILE T>0 !3進法の並びとみる
   LET S=S+MOD(T,10)*3^K
   LET T=INT(T/10)
   LET K=K+1
LOOP
PRINT S
END


答え  3進法表記 20012210212 に変換して、繰り下げによって、0を消去する

LET N=122333
LET T=N
LET B=0
DO WHILE T>3 !3進法へ変換する
   LET W=MOD(T,3)-B
   IF W<=0 THEN !繰り下げ(0サプレス)
      LET W=W+3
      LET B=1
   ELSE
      LET B=0
   END IF
   PRINT W; !※下の位から表示される
   LET T=INT(T/3)
LOOP
IF T-B>0 THEN PRINT T-B !最上位
END

 

Re: 数字1,2,3の並び

 投稿者:山中和義  投稿日:2016年 4月 8日(金)07時36分50秒
  > No.4029[元記事へ]

> また、122333番目に出現する数字の並びを求めよ。


桁数でまとめると(群数列)、
1,2,3    1桁の場合は、3個    0,1,2に対応する
11,12,13,21,22,23,31,32,33    2桁の場合は、3^2=9個    00,01,02,10,11,12,20,21,22に対応する
111,112,113,…    3桁の場合は、3^3=27個    000,001,002,…に対応する
  :
これより、k桁の場合は、3^k個のk桁の3進法表記に対応する。
何桁の何番目の並びになるか求めればよい。


LET N=122333
LET X=N !k桁のx番目
LET K=1 !桁数
LET T=3
DO WHILE X-T>0
   LET X=X-T
   LET K=K+1
   LET T=T*3
LOOP
PRINT K;X
LET T=X-1 !対応する3進法の並びを生成する  ※下の位から
FOR i=1 TO K
   PRINT MOD(T,3)+1; !k桁の先頭の並びを加味する
   LET T=INT(T/3)
NEXT i
END


 

戻る