結果

問題 No.3264 岩井数
ユーザー yas_yasyu
提出日時 2025-09-06 15:16:35
言語 PyPy3
(7.3.15)
結果
TLE  
実行時間 -
コード長 1,492 bytes
コンパイル時間 473 ms
コンパイル使用メモリ 82,400 KB
実行使用メモリ 84,772 KB
最終ジャッジ日時 2025-09-06 15:16:51
合計ジャッジ時間 6,317 ms
ジャッジサーバーID
(参考情報)
judge3 / judge4
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample -- * 2
other AC * 7 TLE * 1 -- * 22
権限があれば一括ダウンロードができます

ソースコード

diff #

N = int(input())


def is_yiwiy9_number(num: str):
    if num[-1] != "9":
        return False

    for i in range((len(num) - 1) // 2):
        if num[i] != num[len(num) - i - 1 - 1]:
            return False
    return True


def over_1e9(N):
    return N * (10**9 // N + 1)


def near_yiwiy9_number(num: str):
    num = num[:-1]
    is_even = len(num) % 2 == 0

    half = num[: len(num) // 2]

    if is_even:
        return "".join([half, half[::-1], "9"])
    else:
        mid = num[len(num) // 2]
        return "".join([half, mid, half[::-1], "9"])


def nxt_yiwiy9_number(num: str):
    num = num[:-1]
    is_even = len(num) % 2 == 0

    half = num[: len(num) // 2]

    if is_even:
        if all(map(lambda d: d == "9", half)):
            is_even = False
            mid = "0"
            half = str(10 ** (len(half) - 1))
        else:
            half = str(int(half) + 1)

    else:
        mid = num[len(num) // 2]
        if mid == "9":
            if all(map(lambda d: d == "9", half)):
                is_even = True
                half = str(10 ** (len(half)))
            else:
                mid = "0"
                half = str(int(half) + 1)
        else:
            mid = str(int(mid) + 1)

    if is_even:
        return "".join([half, half[::-1], "9"])
    else:
        return "".join([half, mid, half[::-1], "9"])


NN = near_yiwiy9_number(str(over_1e9(N)))
while True:
    NN = nxt_yiwiy9_number(NN)
    if int(NN) % N == 0:
        print(NN)
        break
0