結果

問題 No.2187 三立法和 mod 333
ユーザー gew1fw
提出日時 2025-06-12 21:41:30
言語 PyPy3
(7.3.15)
結果
TLE  
実行時間 -
コード長 1,255 bytes
コンパイル時間 159 ms
コンパイル使用メモリ 82,328 KB
実行使用メモリ 92,904 KB
最終ジャッジ日時 2025-06-12 21:45:14
合計ジャッジ時間 2,775 ms
ジャッジサーバーID
(参考情報)
judge5 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other TLE * 1 -- * 32
権限があれば一括ダウンロードができます

ソースコード

diff #

import sys
import bisect
from collections import defaultdict

def main():
    A = int(sys.stdin.readline().strip())
    max_z = 4444
    mod = 333

    # 预处理z的值,计算z³ mod333和z⁴
    mod_z_dict = defaultdict(list)
    for z in range(1, max_z + 1):
        r = (z ** 3) % mod
        z4 = z ** 4
        mod_z_dict[r].append(z4)

    # 预处理x和y的值,计算x³ mod333和x⁴
    x_info = [((x ** 3) % mod, x ** 4) for x in range(1, max_z + 1)]

    max_val = (4444 ** 4)
    total = 0

    for x in range(1, max_z + 1):
        x_mod, x4 = x_info[x - 1]
        for y in range(1, max_z + 1):
            y_mod, y4 = x_info[y - 1]
            s_mod = (x_mod + y_mod) % mod
            target_r = (A - s_mod) % mod
            s_xy = x4 + y4
            if s_xy > max_val:
                continue
            max_z4 = max_val - s_xy
            if max_z4 < 1:
                continue
            # 检查是否在字典中存在对应的余数
            if target_r not in mod_z_dict:
                continue
            z_list = mod_z_dict[target_r]
            # 使用bisect查找
            count_z = bisect.bisect_right(z_list, max_z4)
            total += count_z

    print(total)

if __name__ == "__main__":
    main()
0