結果
問題 | No.1653 Squarefree |
ユーザー |
👑 ![]() |
提出日時 | 2021-08-20 23:32:52 |
言語 | PyPy3 (7.3.15) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,334 bytes |
コンパイル時間 | 241 ms |
コンパイル使用メモリ | 82,516 KB |
実行使用メモリ | 112,664 KB |
最終ジャッジ日時 | 2024-10-14 07:26:40 |
合計ジャッジ時間 | 14,337 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 WA * 1 |
other | AC * 33 WA * 5 |
ソースコード
"""素数の積で表せるL以上R以下を全探索出来る…10^6以下の素数に関しては、全部塗りつぶせる logなので残りは…10^6以下の素数に関しては割り切ってもらっちゃおうすると、 平方数しかありえなくなるあとはやるだけ"""import sysfrom sys import stdindef Sieve(n):ret = []divlis = [-1] * (n+1)flag = [True] * (n+1)flag[0] = Falseflag[1] = Falseind = 2while ind <= n:if flag[ind]:ret.append(ind)ind2 = ind ** 2while ind2 <= n:flag[ind2] = Falsedivlis[ind2] = indind2 += indind += 1return ret,divlisplis,tmp = Sieve(1000000)L,R = map(int,stdin.readline().split())lis = [i for i in range(L,R+1)]flag = [True] * (R-L+1)for p in plis:fi = ((L-1)//p + 1) * pfind = fi-L#print (p,fi)for i in range(find,R-L+1,p):ns = 0while flag[i] and lis[i] % p == 0:lis[i] //= pns += 1if ns > 1:flag[i] = False#print (lis)ans = 0for i in range(R-L+1):if flag[i]:x = L + iy = int(x**0.5)if x not in ( y**2 , (y+1)**2 ):ans += 1print (ans)