結果
| 問題 |
No.6 使いものにならないハッシュ
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2023-01-15 15:58:29 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 128 ms / 5,000 ms |
| コード長 | 1,103 bytes |
| コンパイル時間 | 279 ms |
| コンパイル使用メモリ | 82,576 KB |
| 実行使用メモリ | 108,416 KB |
| 最終ジャッジ日時 | 2024-12-28 09:04:37 |
| 合計ジャッジ時間 | 4,789 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 32 |
ソースコード
# nまでの素数を要素にもつ集合を返す関数
def primesUpTo(n):
primes=set(range(2,n+1))
for i in range(2,n):
if i in primes:
it = i ** 2
while it <= n:
if it in primes:
primes.remove(it)
it += i
return primes
def digit_hash(n):
result=0
while(n!=0):
result+=n%10
n//=10
if result<10:
return result
else:
return digit_hash(result)
k=int(input())
n=int(input())
P=sorted(list(primesUpTo(n)))
from collections import deque
Q=deque()
cnt=0
max_cnt=0
hash=[0 for _ in range(10)]
max_p=0
for i in range(len(P)):
p=P[i]
if p<k:
continue
sp=digit_hash(p)
if hash[sp]==0:
hash[sp]=1
cnt+=1
else:
while(True):
q=Q.popleft()
sq=digit_hash(q)
hash[sq]=0
cnt-=1
if sq==sp:
hash[sp]=1
cnt+=1
break
Q.append(p)
if cnt>=max_cnt:
max_cnt=cnt
max_p=i-cnt+1
print(P[max_p])