結果

問題 No.2187 三立法和 mod 333
ユーザー lam6er
提出日時 2025-04-16 00:01:33
言語 PyPy3
(7.3.15)
結果
TLE  
実行時間 -
コード長 1,253 bytes
コンパイル時間 251 ms
コンパイル使用メモリ 82,212 KB
実行使用メモリ 76,236 KB
最終ジャッジ日時 2025-04-16 00:03:41
合計ジャッジ時間 5,458 ms
ジャッジサーバーID
(参考情報)
judge5 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 13 TLE * 20
権限があれば一括ダウンロードができます

ソースコード

diff #

import sys

def main():
    A = int(sys.stdin.readline())
    T = 4444 ** 4

    # Precompute cube residues and sorted s_y lists
    cube_residues = [[] for _ in range(333)]
    for y in range(1, 4445):
        r = pow(y, 3, 333)
        s = y ** 4
        cube_residues[r].append(s)
    
    # Sort each residue's list
    for r in range(333):
        cube_residues[r].sort()
    
    total = 0

    for x in range(1, 4445):
        rx = pow(x, 3, 333)
        sx = x ** 4
        if sx > T:
            continue
        T_remaining = T - sx
        req = (A - rx) % 333

        current_total = 0
        for r1 in range(333):
            r2 = (req - r1) % 333
            list1 = cube_residues[r1]
            list2 = cube_residues[r2]
            if not list1 or not list2:
                continue

            # Two-pointer technique
            j = len(list2) - 1
            count = 0
            for i in range(len(list1)):
                if list1[i] > T_remaining:
                    break
                while j >= 0 and (list1[i] + list2[j] > T_remaining):
                    j -= 1
                count += j + 1
            current_total += count

        total += current_total

    print(total)

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