投稿者:山中和義
投稿日: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
|
|
|
投稿者:山中和義
投稿日: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
|
|
|