ログインしてください。
提出 #66638547
ソースコード 拡げる
MOD = 10**9 + 7 BASE = 31 # 入力読み込み n, q = gets.split.map(&:to_i) s = gets.strip # 前処理:ハッシュと累乗テーブル hash = Array.new(n + 1, 0) power = Array.new(n + 1, 1) (0...n).each do |i| code = s[i].ord - 'a'.ord + 1 hash[i + 1] = (hash[i] * BASE + code) % MOD power[i + 1] = (power[i] * BASE) % MOD end # 部分ハッシュを取り出す関数(1-indexed) def get_hash(l, r, hash, power) val = hash[r] - hash[l - 1] * power[r - l + 1] % MOD (val + MOD) % MOD end # クエリ処理 q.times do a, b, c, d = gets.split.map(&:to_i) h1 = get_hash(a, b, hash, power) h2 = get_hash(c, d, hash, power) puts h1 == h2 ? "Yes" : "No" end
提出情報
| 提出日時 | |
|---|---|
| 問題 | A56 - String Hash |
| ユーザ | myoshizumi |
| 言語 | Ruby (ruby 3.2.2) |
| 得点 | 1000 |
| コード長 | 713 Byte |
| 結果 | AC |
| 実行時間 | 440 ms |
| メモリ | 21244 KiB |
ジャッジ結果
| セット名 | Sample | All | ||||
|---|---|---|---|---|---|---|
| 得点 / 配点 | 0 / 0 | 1000 / 1000 | ||||
| 結果 |
|
|
| セット名 | テストケース |
|---|---|
| Sample | sample_01.txt |
| All | killer_01.txt, max_01.txt, max_02.txt, max_03.txt, min_01.txt, random_01.txt, random_02.txt, random_03.txt, random_04.txt, random_05.txt, sample_01.txt |
| ケース名 | 結果 | 実行時間 | メモリ |
|---|---|---|---|
| killer_01.txt | AC | 440 ms | 21108 KiB |
| max_01.txt | AC | 349 ms | 21244 KiB |
| max_02.txt | AC | 349 ms | 20832 KiB |
| max_03.txt | AC | 354 ms | 21116 KiB |
| min_01.txt | AC | 43 ms | 16852 KiB |
| random_01.txt | AC | 377 ms | 21048 KiB |
| random_02.txt | AC | 368 ms | 21060 KiB |
| random_03.txt | AC | 371 ms | 21108 KiB |
| random_04.txt | AC | 369 ms | 21088 KiB |
| random_05.txt | AC | 367 ms | 21132 KiB |
| sample_01.txt | AC | 42 ms | 17212 KiB |