結果

問題 No.6 使いものにならないハッシュ
コンテスト
ユーザー fmhr
提出日時 2026-10-10 01:30:33
言語 Go
(1.27.2 + ACL)
コンパイル:
/usr/bin/go_c
実行:
./Main
結果
AC  
実行時間 4 ms / 5,000 ms
+ 488µs
コード長 943 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 12,357 ms
コンパイル使用メモリ 255,872 KB
実行使用メモリ 6,400 KB
最終ジャッジ日時 2026-10-14 11:23:42
合計ジャッジ時間 14,847 ms
ジャッジサーバーID
(参考情報)
judge3_0 / judge2_0
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 33
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

package main

import "fmt"

func main() {
	var K, N int
	fmt.Scan(&K, &N)
	pl := Sieve(K, N)
	hashList := make([]int, len(pl))
	for i, m := range pl {
		hashList[i] = hash(m)
	}
	ans := 0
	ans_len := 0
	for i := 0; i < len(hashList); i++ {
		seen := make(map[int]bool)
		for j := i; j < len(hashList); j++ {
			if seen[hashList[j]] {
				break
			}
			seen[hashList[j]] = true
			if j-i+1 >= ans_len {
				ans = pl[i]
				ans_len = j - i + 1
			}
		}
	}
	fmt.Println(ans)
}

func hash(m int) int {
	for m >= 10 {
		n := m
		m = 0
		for n > 0 {
			m += n % 10
			n /= 10
		}
	}
	return m
}

func Sieve(k, n int) []int {
	isNotPrime := make([]bool, n+1)
	primeList := make([]int, 0)
	isNotPrime[0] = true
	isNotPrime[1] = true
	for i := 2; i <= n; i++ {
		if !isNotPrime[i] { // 素数の場合
			if i >= k {
				primeList = append(primeList, i)
			}
			for j := 2 * i; j <= n; j += i {
				isNotPrime[j] = true
			}
		}
	}
	return primeList
}
0