結果

問題 No.8133 ‮Reversed‪
コンテスト
ユーザー 遭難者
提出日時 2026-04-01 23:26:25
言語 PyPy3
(7.3.17)
コンパイル:
pypy3 -mpy_compile _filename_
実行:
pypy3 _filename_
結果
WA  
実行時間 -
コード長 863 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 197 ms
コンパイル使用メモリ 85,248 KB
実行使用メモリ 171,424 KB
最終ジャッジ日時 2026-04-01 23:26:35
合計ジャッジ時間 8,045 ms
ジャッジサーバーID
(参考情報)
judge1_1 / judge4_0
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 1
other WA * 6
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

from functools import lru_cache

MOD = 7000000001
MA = 19

pow10 = [1] * (2 * MA + 1)
for i in range(MA):
    pow10[i + 1] = pow10[i] * 10 % MOD

full = [0] * (2 * MA + 1)
pref = [0] * (2 * MA + 1)
for i in range(1, MA + 1):
    full[i] = 45 * pow10[2 * i - 2] % MOD
    pref[i] = (pref[i - 1] + full[i]) % MOD


@lru_cache
def calc(n):
    if n <= 0:
        return 0
    if n < 10:
        return n * (n + 1) // 2

    k = len(str(n))
    q, r = divmod(n, 10)
    start = pow10[k - 2]

    s = pref[k - 1]

    if q > start:
        s += 10 * (calc(q - 1) - pref[k - 2]) % MOD
        s += 45 * pow10[k - 1] * (q - start) % MOD

    s += (r + 1) * int(str(q)[::-1]) % MOD
    s += r * (r + 1) // 2 * pow10[k - 1] % MOD
    return s % MOD


for _ in range(int(input())):
    l, r = map(int, input().split())
    ans = (calc(r) - calc(l - 1)) % MOD
    print(ans)
0