結果
問題 |
No.2187 三立法和 mod 333
|
ユーザー |
![]() |
提出日時 | 2025-06-12 16:56:11 |
言語 | PyPy3 (7.3.15) |
結果 |
TLE
|
実行時間 | - |
コード長 | 1,255 bytes |
コンパイル時間 | 232 ms |
コンパイル使用メモリ | 82,512 KB |
実行使用メモリ | 93,148 KB |
最終ジャッジ日時 | 2025-06-12 16:56:15 |
合計ジャッジ時間 | 2,832 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | TLE * 1 -- * 32 |
ソースコード
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()