結果
| 問題 | No.6 使いものにならないハッシュ |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2026-10-15 16:27:20 |
| 言語 | C++23(gcc16) (gcc 16.2.0 + boost 1.92.0 + ACL) |
| 結果 |
AC
不安定
|
| 実行時間 | 2 ms / 5,000 ms |
| + 757µs | |
| コード長 | 970 bytes |
| 記録 | |
| コンパイル時間 | 2,743 ms |
| コンパイル使用メモリ | 174,520 KB |
| 実行使用メモリ | 9,872 KB |
| 最終ジャッジ日時 | 2026-10-15 16:27:40 |
| 合計ジャッジ時間 | 4,868 ms |
|
ジャッジサーバーID (参考情報) |
judge3_0 / judge4_0 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 33 |
ソースコード
#include <iostream>
#include <vector>
int main() {
using namespace std;
int k, n;
cin >> k >> n;
vector<bool> is_prime(n + 1, true);
for (int i = 2; i <= n / i; i++) {
if (!is_prime[i]) { continue; }
for (int j = i * i; j <= n; j += i) { is_prime[j] = false; }
}
vector<int> primes;
for (int i = 2; i <= n; i++) {
if (i >= k && is_prime[i]) { primes.push_back(i); }
}
constexpr int MOD = 9;
const int m = primes.size();
int ans = 0, max_size = 0, cnt = 0, r = 0;
vector<bool> used(MOD, false);
for (int l = 0; l < m; l++) {
while (r < m && cnt < MOD) {
if (used[primes[r] % MOD]) { break; }
used[primes[r] % MOD] = true;
cnt++;
r++;
}
if (r - l >= max_size) {
ans = primes[l];
max_size = r - l;
}
used[primes[l] % MOD] = false;
cnt--;
}
cout << ans << endl;
}