結果

問題 No.3 ビットすごろく
コンテスト
ユーザー iLL
提出日時 2026-03-07 06:27:18
言語 Fortran
(gFortran 15.2.0)
コンパイル:
gfortran _filename_ -O2 -o ./a.out
実行:
./a.out
結果
AC  
実行時間 171 ms / 5,000 ms
コード長 826 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 1,447 ms
コンパイル使用メモリ 39,528 KB
実行使用メモリ 7,848 KB
最終ジャッジ日時 2026-03-07 06:27:23
合計ジャッジ時間 4,402 ms
ジャッジサーバーID
(参考情報)
judge3 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 33
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

RECURSIVE SUBROUTINE SUGOROKU(A, N, I)
    IMPLICIT NONE
    INTEGER :: N, A(N), I
    INTEGER :: BITTO, TMP

    BITTO = 0
    TMP = I

    DO WHILE (TMP > 0)
        BITTO = BITTO + MOD(TMP, 2)
        TMP = TMP / 2
    END DO

    IF (I - BITTO > 0 .AND. (A(I - BITTO) == -1 .OR. A(I - BITTO) > A(I) + 1)) THEN
        A(I - BITTO) = A(I) + 1
        CALL SUGOROKU(A, N, I - BITTO)
    END IF

    IF (I + BITTO <= N .AND. (A(I + BITTO) == -1 .OR. A(I + BITTO) > A(I) + 1)) THEN
        A(I + BITTO) = A(I) + 1
        CALL SUGOROKU(A, N, I + BITTO)
    END IF
END SUBROUTINE SUGOROKU

PROGRAM MAIN
    IMPLICIT NONE
    INTEGER :: N
    INTEGER, ALLOCATABLE, DIMENSION(:) :: A

    READ *, N
    ALLOCATE(A(N), SOURCE = -1)

    ! PRINT *, A(:)

    A(1) = 1

    CALL SUGOROKU(A, N, 1)

    PRINT *, A(N)
END PROGRAM MAIN
0