結果
| 問題 | No.6 使いものにならないハッシュ | 
| コンテスト | |
| ユーザー |  双六 | 
| 提出日時 | 2020-07-25 23:58:46 | 
| 言語 | PyPy3 (7.3.15) | 
| 結果 | 
                                AC
                                 
                             | 
| 実行時間 | 111 ms / 5,000 ms | 
| コード長 | 1,090 bytes | 
| コンパイル時間 | 180 ms | 
| コンパイル使用メモリ | 81,920 KB | 
| 実行使用メモリ | 79,144 KB | 
| 最終ジャッジ日時 | 2024-09-16 16:58:05 | 
| 合計ジャッジ時間 | 4,587 ms | 
| ジャッジサーバーID (参考情報) | judge3 / judge2 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| other | AC * 32 | 
ソースコード
import sys; input = sys.stdin.buffer.readline
sys.setrecursionlimit(10**7)
from collections import defaultdict
con = 10 ** 9 + 7; INF = float("inf")
def getlist():
	return list(map(int, input().split()))
num = 2 * 10 ** 5 + 1 #適当に値を入れる
L = [1 for i in range(num)]; L[0] = 0; L[1] = 0
plist = []
for i in range(num):
	if L[i] == 1:
		plist.append(i); c = 2
		while i * c <= num - 1:
			L[i * c] = 0; c += 1
def hashing(N):
	while N >= 10:
		N = sum(list(map(int, list(str(N)))))
	return N
#処理内容
def main():
	K = int(input())
	N = int(input())
	hashlist = []
	for i in plist:
		x = hashing(i)
		hashlist.append(x)
	M = len(plist)
	# print(hashlist)
	itr = None
	for i in range(M):
		if plist[i] >= K:
			itr = i
			break
	# 尺取り
	D = [0] * 10
	length = 0
	ans = 0
	val = 0
	j = itr
	while itr < M:
		h = hashlist[itr]
		if plist[itr] > N:
			break
		if D[h] == 0:
			D[h] += 1
			val += 1
			itr += 1
		else:
			D[hashlist[j]] -= 1
			val -= 1
			j += 1
		if val >= length:
			length = val
			ans = plist[j]
	print(ans)
if __name__ == '__main__':
	main()
            
            
            
        