結果
| 問題 | No.6 使いものにならないハッシュ |
| コンテスト | |
| ユーザー |
👑 |
| 提出日時 | 2026-11-03 18:09:32 |
| 言語 | Fix (1.6.0 + cp-library + minilib) |
| 結果 |
AC
不安定
|
| 実行時間 | 2 ms / 5,000 ms |
| + 189µs | |
| コード長 | 1,963 bytes |
| 記録 | |
| コンパイル時間 | 11,413 ms |
| コンパイル使用メモリ | 671,712 KB |
| 実行使用メモリ | 9,928 KB |
| 最終ジャッジ日時 | 2026-11-03 18:10:05 |
| 合計ジャッジ時間 | 12,373 ms |
|
ジャッジサーバーID (参考情報) |
judge2_0 / judge1_0 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 33 |
コンパイルメッセージ
make: 'lib.o' は更新済みです.
ソースコード
module Main;
import BinaryHeap;
import BoolArray;
import CPLib.Arithmetic;
import CPLib.Bipartite;
import CPLib.Bits;
import CPLib.Convolution;
import CPLib.DSegtree;
import CPLib.Graph;
import CPLib.IO;
import CPLib.LDSegtree;
import CPLib.LSegtree;
import CPLib.MaxFlow;
import CPLib.Memoize;
import CPLib.MinCostFlow;
import CPLib.Misc;
import CPLib.Monoid;
import CPLib.Segtree;
import CPLib.String;
import CPLib.Trait;
import CPLib.TwoSat;
import CPLib.UnionFind;
import CPLib.ZP;
import HashMap;
import HashSet;
main : IO () = (
let cK = *read_i;
let cN = *read_i;
let cN = cN + 1;
let ps = calc_prime_list(cN);
let ps = ps.to_iter.filter(|x| cK <= x.i64).map(i64).to_array;
let hash : I64 -> I64 = |p| (
let hash1 : I64 -> I64 = |p| (
loop((0, p), |(sum, p)|
if p == 0 { sum.break };
let sum = sum + p % 10;
let p = p / 10;
(sum, p).continue
)
);
loop(p, |p|
if p < 10 { p.break };
hash1(p).continue
)
);
let hs = ps.map(hash);
let mxi = loop(((0, 0), 0, 0, 0), |((mx, mxi), begin, end, flag)|
let (end, flag) = loop((end, flag), |(end, flag)|
if end >= hs.@size { (end, flag).break };
let h = hs.@(end);
if flag.bit_check(h) {
(end, flag).break
} else {
let end = end + 1;
let flag = flag.bit_set(h);
(end, flag).continue
}
);
let len = end - begin;
let (mx, mxi) = if len >= mx {
(len, begin)
} else {
(mx, mxi)
};
if end == hs.@size { mxi.break };
let h = hs.@(begin);
let flag = flag.bit_clear(h);
let begin = begin + 1;
((mx, mxi), begin, end, flag).continue
);
let ans = ps.@(mxi);
ans.to_string.println;;
pure()
);