結果

問題 No.732 3PrimeCounting
ユーザー n_bitand_n_per_3
提出日時 2025-08-11 17:40:07
言語 PyPy3
(7.3.15)
結果
TLE  
実行時間 -
コード長 929 bytes
コンパイル時間 333 ms
コンパイル使用メモリ 82,652 KB
実行使用メモリ 99,188 KB
最終ジャッジ日時 2025-08-11 17:40:57
合計ジャッジ時間 49,326 ms
ジャッジサーバーID
(参考情報)
judge4 / judge5
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 85 TLE * 3 -- * 1
権限があれば一括ダウンロードができます

ソースコード

diff #

from collections import defaultdict

N = int(input())

array = [True]*(3*N+1)
array[0] = False
array[1] = False

prime_1 = []
prime_2 = []

i = 2
while i <= 3*N:
  if array[i]:
    for j in range(2*i, 3*N+1, i):
      array[j] = False
    if 3 < i <= N:
      if i % 3 == 1:
        prime_1.append(i)
      if i % 3 == 2:
        prime_2.append(i)
  i += 1

ans = 0

prime_1_1 = defaultdict(int)
for i in range(len(prime_1)):
  for j in range(i+1,len(prime_1)):
    prime_1_1[prime_1[i]+prime_1[j]] += 1

prime_2_2 = defaultdict(int)
for i in range(len(prime_2)):
  for j in range(i+1,len(prime_2)):
    prime_2_2[prime_2[i]+prime_2[j]] += 1

for s in prime_1_1:
  c = 0
  if array[3+s]:
    c += 1
  for j in prime_2:
    if array[j+s]:
      c += 1
  ans += c*prime_1_1[s]

for s,v in prime_2_2.items():
  c = 0
  if array[3+s]:
    c += 1
  for j in prime_1:
    if array[j+s]:
      c += 1
  ans += c*prime_2_2[s]

print(ans)
0