結果
| 問題 |
No.6 使いものにならないハッシュ
|
| コンテスト | |
| ユーザー |
6soukiti29
|
| 提出日時 | 2017-07-05 23:54:27 |
| 言語 | Nim (2.2.0) |
| 結果 |
AC
|
| 実行時間 | 7 ms / 5,000 ms |
| コード長 | 1,074 bytes |
| コンパイル時間 | 3,860 ms |
| コンパイル使用メモリ | 65,792 KB |
| 実行使用メモリ | 5,376 KB |
| 最終ジャッジ日時 | 2024-09-16 16:40:37 |
| 合計ジャッジ時間 | 4,845 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 32 |
ソースコード
import strutils,sequtils,algorithm
proc CToI(c : char):int =
return int(c) - int('0')
var
K = stdin.readline.parseInt
N = stdin.readline.parseInt
sosuu = newSeq[int](0)
natu = newSeqWith(N + 1,true)
k : int
for i in 2..N:
if natu[i]:
k = i
while k <= N:
natu[k] = false
k += i
sosuu.add(i)
var
Nid,Kid : int
H : seq[int]
s : string
flag = newSeqWith(10,false)
rig,lef,ans,M : int
Nid = sosuu.lowerBound(N) - 1
Kid = sosuu.lowerBound(K)
if sosuu[^1] == N:
Nid += 1
H = @[]
for i in sosuu[Kid..Nid]:
k = i
while k >= 10:
s = $k
k = 0
for t in s:
k += CToI(t)
H.add(k)
lef = 0
M = 0
for rig in 0..H.high:
if flag[H[rig]] == false:
flag[H[rig]] = true
else:
while flag[H[rig]] == true:
flag[H[lef]] = false
lef += 1
flag[H[rig]] = true
if rig - lef + 1 >= M:
ans = sosuu[Kid + lef]
M = rig - lef + 1
if M == 7:
break
echo ans
6soukiti29