過去ログ

SECOND
十進BASIC です。1〜12段までやってみました。違ってたらゴメン

FOR y=1 TO 12
LET sum=0
CALL octa(0,0)
PRINT USING"! ## 段 #### 通り": y,sum
NEXT y

SUB octa(k,p)
LET s=s+p !k 桁までの段数
IF y=s THEN !y 段丁度
LET sum=sum+1 !y 段の累計
ELSEIF s< y THEN !y 段未満
CALL octa(k+1,1) !次の1段追加
IF p<>2 THEN CALL octa(k+1,2) !不連続の2段追加
IF p<>3 THEN CALL octa(k+1,3) !不連続の3段追加
END IF
LET s=s-p !k 桁の段数 cancel
END SUB

END

!<実行結果>
! 1 段 1 通り
! 2 段 2 通り
! 3 段 4 通り
! 4 段 6 通り
! 5 段 11 通り
! 6 段 19 通り
! 7 段 32 通り
! 8 段 55 通り
! 9 段 95 通り
! 10 段 163 通り
! 11 段 280 通り
! 12 段 481 通り
   4月25日(日) 19:50:42     50430

過去問題一覧へ戻る