結果
| 問題 | No.308 素数は通れません |
| コンテスト | |
| ユーザー |
titia
|
| 提出日時 | 2026-06-28 04:46:22 |
| 言語 | PyPy3 (7.3.17) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,450 bytes |
| 記録 | |
| コンパイル時間 | 268 ms |
| コンパイル使用メモリ | 85,248 KB |
| 実行使用メモリ | 133,340 KB |
| 最終ジャッジ日時 | 2026-06-28 04:46:33 |
| 合計ジャッジ時間 | 10,534 ms |
|
ジャッジサーバーID (参考情報) |
judge3_0 / judge2_0 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 100 WA * 7 |
ソースコード
import sys
input = sys.stdin.readline
x=10**6
L=1000
Primelist=[i for i in range(x+1)]
Primelist[1]=0 # 1は素数でないので0にする.
for i in Primelist:
if i>L:
break
if i==0:
continue
for j in range(2*i,x+1,i):
Primelist[j]=0
Primes=[Primelist[j] for j in range(x+1) if Primelist[j]!=0]
SP=set(Primes)
N=int(input())
if N<=10**6:
for w in range(1,N+1):
h=(N+w-1)//w
MAP=[[0]*w for i in range(h)]
MAP[0][0]=1
Q=[(0,0)]
r=N%w
if r==0:
r=w
while Q:
x,y=Q.pop()
for z0,w0 in [(x+1,y),(x-1,y),(x,y+1),(x,y-1)]:
if 0<=z0<h and 0<=w0<w:
if z0!=h-1:
if (z0*w+w0+1) in SP:
continue
else:
if MAP[z0][w0]==0:
MAP[z0][w0]=1
Q.append((z0,w0))
else:
if 0<=w0<r:
if (z0*w+w0+1) in SP:
continue
else:
if MAP[z0][w0]==0:
MAP[z0][w0]=1
Q.append((z0,w0))
if MAP[h-1][r-1]==1:
print(w)
break
else:
print(8)
titia