結果
問題 | No.1653 Squarefree |
ユーザー |
👑 ![]() |
提出日時 | 2021-08-20 23:34:59 |
言語 | PyPy3 (7.3.15) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,395 bytes |
コンパイル時間 | 162 ms |
コンパイル使用メモリ | 82,384 KB |
実行使用メモリ | 112,768 KB |
最終ジャッジ日時 | 2024-10-14 07:30:12 |
合計ジャッジ時間 | 14,182 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 35 WA * 3 |
ソースコード
"""素数の積で表せる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]:if lis[i] == 1:ans += 1else:x = L + iy = int(x**0.5)if x not in ( y**2 , (y+1)**2 ):ans += 1print (ans)