結果
問題 |
No.2187 三立法和 mod 333
|
ユーザー |
![]() |
提出日時 | 2025-06-12 21:37:45 |
言語 | PyPy3 (7.3.15) |
結果 |
TLE
|
実行時間 | - |
コード長 | 1,485 bytes |
コンパイル時間 | 220 ms |
コンパイル使用メモリ | 82,532 KB |
実行使用メモリ | 92,464 KB |
最終ジャッジ日時 | 2025-06-12 21:40:44 |
合計ジャッジ時間 | 2,908 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | TLE * 1 -- * 32 |
ソースコード
import bisect def main(): A = int(input().strip()) MOD = 333 limit = 4444 ** 4 # 预处理z的r_z和s_z,并按r_z分组,每组内的s_z排序 groups = [[] for _ in range(MOD)] max_z = 4444 # z的取值范围是1到4444 for z in range(1, max_z + 1): r_z = (z ** 3) % MOD s_z = z ** 4 groups[r_z].append(s_z) # 对每个组进行排序 for r in range(MOD): groups[r].sort() total = 0 # 预处理x的r_x和s_x x_info = [] for x in range(1, max_z + 1): r_x = (x ** 3) % MOD s_x = x ** 4 x_info.append((r_x, s_x)) # 预处理y的r_y和s_y y_info = [] for y in range(1, max_z + 1): r_y = (y ** 3) % MOD s_y = y ** 4 y_info.append((r_y, s_y)) for x in range(len(x_info)): r_x, s_x = x_info[x] for y in range(len(y_info)): r_y, s_y = y_info[y] s_total_xy = s_x + s_y if s_total_xy > limit: continue # z不可能满足条件 r_total = (r_x + r_y) % MOD required_r_z = (A - r_total) % MOD s_max = limit - s_total_xy if s_max < 1: continue # z至少为1,s_z >=1 # 查找groups[required_r_z]中s_z <= s_max的数量 lst = groups[required_r_z] count = bisect.bisect_right(lst, s_max) total += count print(total) if __name__ == "__main__": main()