結果
| 問題 | No.12 限定された素数 |
| コンテスト | |
| ユーザー |
6soukiti29
|
| 提出日時 | 2017-07-22 23:51:26 |
| 言語 | Nim (2.2.0) |
| 結果 |
AC
|
| 実行時間 | 114 ms / 5,000 ms |
| コード長 | 1,228 bytes |
| 記録 | |
| コンパイル時間 | 4,685 ms |
| コンパイル使用メモリ | 65,664 KB |
| 実行使用メモリ | 16,256 KB |
| 最終ジャッジ日時 | 2024-11-24 10:01:02 |
| 合計ジャッジ時間 | 6,045 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 26 |
ソースコード
import sequtils,strutils
proc ctoi(c : char):int8=
return c.int8 - '0'.int8
var
sosuu : seq[int]
j : int
t : int8
N = stdin.readline.parseInt
A = stdin.readline.split.map(parseInt)
aset : set[int8]
flag : array[5_000_001,bool]
flag2 : bool
flag3 : bool
Mlen = 0
li : int
sosuu = @[0]
for i in 2..5_000_000:
if flag[i] == false:
j = i * 2
sosuu.add(i)
while j < 5_000_000:
flag[j] = true
j += i
sosuu.add(5_000_001)
for a in A:
aset.incl(a.int8)
flag2 = false
var bset = aset
for i,n in sosuu[1..<sosuu.high]:
flag3 = false
for s in $n:
t = s.ctoi
if t in aset and flag2:
bset = bset - {t}
elif t in aset:
discard
else:
flag3 = true
flag2 = false
break
if flag2 == false and flag3 == false:
bset = aset
for s in $n:
t = s.ctoi
bset = bset - {t}
flag2 = true
li = i + 1
if flag2 == true and bset.card == 0:
Mlen = max(Mlen,sosuu[i + 2] - sosuu[li - 1] - 2)
#echo sosuu[i + 2]," ",sosuu[li - 1]
if Mlen > 0:
echo Mlen
else:
echo -1
6soukiti29