結果
問題 |
No.1653 Squarefree
|
ユーザー |
![]() |
提出日時 | 2025-03-22 14:17:15 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 943 ms / 2,000 ms |
コード長 | 1,061 bytes |
コンパイル時間 | 217 ms |
コンパイル使用メモリ | 82,420 KB |
実行使用メモリ | 96,768 KB |
最終ジャッジ日時 | 2025-03-22 14:17:51 |
合計ジャッジ時間 | 25,830 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 38 |
ソースコード
L, R = map(int, input().split()) if R == 1: print(1) exit() # 素数リスト作成 def PrimeList(N): P = [1] * (N + 1) P[0] = P[1] = 0 for i in range(2, N + 1): if P[i]: for j in range(i + i, N + 1, i): P[j] = 0 PL = [] for i in range(N + 1): if P[i] == 1: PL.append(i) return PL PL = PrimeList(10 ** 6) A = list(range(L, R + 1)) for p in PL: p2 = p * p for i in range(-(-L // p) * p - L, R // p * p - L + 1, p): j = 0 while A[i] % p == 0: if j == 1: A[i] = -1 else: A[i] //= p j += 1 def check(x, y): return x >= y * y for i in range(R - L + 1): a = A[i] if a > 1: lb = 0 ub = R while ub - lb > 1: mid = (ub + lb) // 2 if check(a, mid): lb = mid else: ub = mid if a == lb * lb: A[i] = -1 ans = 0 for a in A: if a > 0: ans += 1 print(ans)