結果

問題 No.6 使いものにならないハッシュ
ユーザー Hydru
提出日時 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
権限があれば一括ダウンロードができます

ソースコード

diff #

# 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])
0