結果
問題 |
No.843 Triple Primes
|
ユーザー |
|
提出日時 | 2019-06-29 20:07:54 |
言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,236 bytes |
コンパイル時間 | 124 ms |
コンパイル使用メモリ | 12,544 KB |
実行使用メモリ | 18,664 KB |
最終ジャッジ日時 | 2024-07-02 05:39:51 |
合計ジャッジ時間 | 3,712 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 40 WA * 2 |
ソースコード
from collections import defaultdict from sys import stdin def primes235(limit): yield 2; yield 3; yield 5 if limit < 7: return modPrms = [7,11,13,17,19,23,29,31] gaps = [4,2,4,2,4,6,2,6,4,2,4,2,4,6,2,6] ndxs = [0,0,0,0,1,1,2,2,2,2,3,3,4,4,4,4,5,5,5,5,5,5,6,6,7,7,7,7,7,7] lmtbf = (limit + 23) // 30 * 8 - 1 lmtsqrt = (int(limit ** 0.5) - 7) lmtsqrt = lmtsqrt // 30 * 8 + ndxs[lmtsqrt % 30] buf = [True] * (lmtbf + 1) for i in range(lmtsqrt + 1): if buf[i]: ci = i & 7; p = 30 * (i >> 3) + modPrms[ci] s = p * p - 7; p8 = p << 3 for j in range(8): c = s // 30 * 8 + ndxs[s % 30] buf[c::p8] = [False] * ((lmtbf - c) // p8 + 1) s += p * gaps[ci]; ci += 1 for i in range(lmtbf - 6 + (ndxs[(limit - 7) % 30])): if buf[i]: yield (30 * (i >> 3) + modPrms[i & 7]) def main(): N = int(input()) primes = list(primes235(N)) r2 = defaultdict(int) for i in primes: r2[i*i] = 1 ans = 0 for i in primes: if r2[2+i]: if i == 2: ans += 1 else: ans += 2 print(ans) input = lambda: stdin.readline() main()