結果

問題 No.3658 Darumaka Number 2
コンテスト
ユーザー 👑 loop0919
提出日時 2026-08-30 13:57:29
言語 PyPy3
(7.3.23)
コンパイル:
pypy3 -mpy_compile _filename_
実行:
pypy3 _filename_
結果
AC  
実行時間 77 ms / 2,000 ms
+ 679µs
コード長 714 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 1,231 ms
コンパイル使用メモリ 95,852 KB
実行使用メモリ 90,752 KB
最終ジャッジ日時 2026-08-30 13:58:01
合計ジャッジ時間 6,586 ms
ジャッジサーバーID
(参考情報)
judge3_0 / judge1_1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 45
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

import sys

sys.setrecursionlimit(10**6)

N = [*input()]
size = len(N)

if all(n in ("4", "5") for n in N):
    print(*N, sep="")
    exit()

if ["4"] * size > N:
    print("5" * (size - 1))
    exit()

ans = []


def dfs(idx):
    n = int(N[idx])
    if n <= 3:
        return False
    elif n == 4:
        ans.append("4")
        res = dfs(idx + 1)
        if res == False:
            ans.pop()
            return False
    elif n == 5:
        ans.append("5")
        res = dfs(idx + 1)

        if res == False:
            ans.pop()
            ans.append("4")
            ans.extend(["5"] * (size - idx - 1))
    else:
        ans.extend(["5"] * (size - idx))

    return True


dfs(0)
print(*ans, sep="")
0