結果
| 問題 |
No.1653 Squarefree
|
| コンテスト | |
| ユーザー |
tamato
|
| 提出日時 | 2021-08-21 17:33:51 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 728 ms / 2,000 ms |
| コード長 | 1,255 bytes |
| コンパイル時間 | 190 ms |
| コンパイル使用メモリ | 82,688 KB |
| 実行使用メモリ | 85,020 KB |
| 最終ジャッジ日時 | 2024-10-15 08:12:15 |
| 合計ジャッジ時間 | 18,721 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 38 |
ソースコード
mod = 1000000007
eps = 10**-9
def main():
import sys
from math import sqrt
input = sys.stdin.readline
N = 10 ** 6
L, R = map(int, input().split())
A = list(range(L, R+1))
for d in range(2, N+1):
xl = (L - 1) // d + 1
xr = R // d
for x in range(xl, xr + 1):
m = A[d * x - L]
if m != -1:
if m % (d**2) == 0:
A[d*x - L] = -1
else:
if m % d == 0:
A[d * x - L] //= d
ans = 0
for m_ in range(L, R+1):
if A[m_ - L] == -1:
continue
ans += 1
m = A[m_ - L]
if m != 1:
mm = int(sqrt(m))
for j in range(-2, 3):
if mm + j > 0:
if (mm + j) ** 2 == m:
if mm + j > N:
ans -= 1
print(ans)
"""
# guchoku
cnt = 0
ok = [0] * (R - L + 1)
for i in range(L, R+1):
flg = 1
for d in range(2, 101):
if i % (d**2) == 0:
flg = 0
break
cnt += flg
if flg:
ok[i - L] = 1
print(cnt)
"""
if __name__ == '__main__':
main()
tamato