結果
問題 |
No.781 円周上の格子点の数え上げ
|
ユーザー |
![]() |
提出日時 | 2025-04-15 23:03:24 |
言語 | PyPy3 (7.3.15) |
結果 |
TLE
|
実行時間 | - |
コード長 | 1,089 bytes |
コンパイル時間 | 510 ms |
コンパイル使用メモリ | 81,696 KB |
実行使用メモリ | 153,396 KB |
最終ジャッジ日時 | 2025-04-15 23:05:05 |
合計ジャッジ時間 | 8,134 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 20 TLE * 1 |
ソースコード
import sys def sieve_min_prime(max_n): min_prime = [0] * (max_n + 1) for i in range(2, max_n + 1): if min_prime[i] == 0: min_prime[i] = i j = i * i while j <= max_n: if min_prime[j] == 0: min_prime[j] = i j += i return min_prime def compute_f(R, min_prime): product = 1 n = R while n > 1: p = min_prime[n] if p == 0: p = n count = 0 while n % p == 0: count += 1 n = n // p if p % 4 == 3: if count % 2 != 0: return 0 else: if p != 2: product *= (count + 1) return product * 4 def main(): X, Y = map(int, sys.stdin.readline().split()) if X == 0: X = 1 max_n = Y min_prime = sieve_min_prime(max_n) max_f = 0 for R in range(X, Y + 1): current_f = compute_f(R, min_prime) if current_f > max_f: max_f = current_f print(max_f) if __name__ == '__main__': main()