結果
問題 | No.800 四平方定理 |
ユーザー |
![]() |
提出日時 | 2023-03-03 05:04:30 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 342 ms / 2,000 ms |
コード長 | 675 bytes |
コンパイル時間 | 837 ms |
コンパイル使用メモリ | 82,304 KB |
実行使用メモリ | 190,592 KB |
最終ジャッジ日時 | 2024-09-17 20:40:53 |
合計ジャッジ時間 | 6,640 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 30 |
ソースコード
# 公式解説より# 2重ループは可能、を押し進めるべきだった# x, yで作れる数を全探索# w, D, zで作れる数を全探索# その組合せ数が答え# TLEする、defaultdictより配列の方が高速なのか?N, D = map(int, input().split())from collections import defaultdictxy = [0]*(2*N**2+1)for x in range(1, N+1):for y in range(1, N+1):calc = x**2+y**2xy[calc] += 1wDz = [0]*(2*N**2+1)for w in range(1, N+1):for z in range(1, N+1):calc = w**2+D-z**2if 0 < calc <= 2*N**2+1:wDz[calc] += 1ans = 0for i in range(1, 2*N**2+1):ans += xy[i]*wDz[i]print(ans)