結果

問題 No.2246 1333-like Number
ユーザー Yuu EguciYuu Eguci
提出日時 2023-04-04 19:36:45
言語 Python3
(3.12.2 + numpy 1.26.4 + scipy 1.12.0)
結果
AC  
実行時間 208 ms / 2,000 ms
コード長 1,397 bytes
コンパイル時間 268 ms
コンパイル使用メモリ 12,800 KB
実行使用メモリ 12,544 KB
最終ジャッジ日時 2024-10-01 10:25:21
合計ジャッジ時間 3,525 ms
ジャッジサーバーID
(参考情報)
judge5 / judge2
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 29 ms
10,752 KB
testcase_01 AC 29 ms
10,752 KB
testcase_02 AC 29 ms
10,752 KB
testcase_03 AC 30 ms
11,008 KB
testcase_04 AC 208 ms
12,032 KB
testcase_05 AC 102 ms
12,416 KB
testcase_06 AC 125 ms
12,288 KB
testcase_07 AC 139 ms
12,160 KB
testcase_08 AC 52 ms
12,160 KB
testcase_09 AC 109 ms
12,544 KB
testcase_10 AC 51 ms
12,032 KB
testcase_11 AC 96 ms
12,416 KB
testcase_12 AC 31 ms
11,008 KB
testcase_13 AC 35 ms
10,880 KB
testcase_14 AC 56 ms
12,032 KB
testcase_15 AC 54 ms
12,160 KB
testcase_16 AC 78 ms
12,160 KB
testcase_17 AC 136 ms
12,160 KB
testcase_18 AC 35 ms
11,008 KB
testcase_19 AC 40 ms
11,008 KB
testcase_20 AC 174 ms
12,032 KB
testcase_21 AC 121 ms
12,544 KB
testcase_22 AC 89 ms
12,416 KB
testcase_23 AC 187 ms
12,160 KB
testcase_24 AC 160 ms
12,288 KB
testcase_25 AC 28 ms
11,008 KB
testcase_26 AC 185 ms
12,160 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

import sys
import math

N = int(input())

c, remainder = divmod(N, 36)

# 36の倍数 → 商をひとつ下げる。
if remainder == 0:
    c -= 1

# NOTE: dict ではなく list にしたほうがカッコイイけど、
#       余りの値: a, b という対応にしたほうが分かりやすいと思ったので。
a, b = {
    1: (1, 2),
    2: (1, 3),
    3: (1, 4),
    4: (1, 5),
    5: (1, 6),
    6: (1, 7),
    7: (1, 8),
    8: (1, 9),
    9: (2, 3),
    10: (2, 4),
    11: (2, 5),
    12: (2, 6),
    13: (2, 7),
    14: (2, 8),
    15: (2, 9),
    16: (3, 4),
    17: (3, 5),
    18: (3, 6),
    19: (3, 7),
    20: (3, 8),
    21: (3, 9),
    22: (4, 5),
    23: (4, 6),
    24: (4, 7),
    25: (4, 8),
    26: (4, 9),
    27: (5, 6),
    28: (5, 7),
    29: (5, 8),
    30: (5, 9),
    31: (6, 7),
    32: (6, 8),
    33: (6, 9),
    34: (7, 8),
    35: (7, 9),
    0: (8, 9),
}[remainder]


def calculate_answer(a: int, b: int, c: int) -> int:
    """
    'うしっぽい数' とやらを作成する。
    """
    x = 10 * a + b
    for _ in range(c):
        x = 10 * x + b
    return x


answer = calculate_answer(a, b, c)
# 最近の Python は、4300桁以降を str 変換できない。
# 桁数を求めて……
digits = math.ceil(math.log10(answer + 1))
if digits >= 4300:
    # ……制限を変更する。
    sys.set_int_max_str_digits(digits)
print(answer)
0