結果
| 問題 | No.6 使いものにならないハッシュ | 
| コンテスト | |
| ユーザー |  | 
| 提出日時 | 2015-08-18 14:47:00 | 
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) | 
| 結果 | 
                                WA
                                 
                             | 
| 実行時間 | - | 
| コード長 | 1,133 bytes | 
| コンパイル時間 | 1,400 ms | 
| コンパイル使用メモリ | 170,616 KB | 
| 実行使用メモリ | 6,944 KB | 
| 最終ジャッジ日時 | 2024-07-18 10:09:53 | 
| 合計ジャッジ時間 | 2,517 ms | 
| ジャッジサーバーID (参考情報) | judge5 / judge1 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| other | AC * 28 WA * 4 | 
ソースコード
#include <bits/stdc++.h>
#define rep(i, a) for (int i = 0; i < (a); i++)
#define rep2(i, a, b) for (int i = (a); i < (b); i++)
#define repr(i, a) for (int i = (a) - 1; i >= 0; i--)
#define repr2(i, a, b) for (int i = (b) - 1; i >= (a); i--)
using namespace std;
typedef long long ll;
const ll inf = 1e9;
const ll mod = 1e9 + 7;
int K, N;
const int maxn = 1e6;
bool isprime[maxn];
vector<int> prime;
vector<int> h;
int f(int n) {
	return 1 + (n - 1) % 9;
}
void sieve() {
	fill(isprime, isprime + maxn, true);
	for (ll i = 2; i < maxn; i++) {
		if (isprime[i]) {
			prime.push_back(i);
			h.push_back(f(i));
			for (ll j = i * i; j < maxn; j += i) {
				isprime[j] = false;
			}
		}
	}
}
int main() {
	sieve();
	int K, N;
	cin >> K >> N;
	K = lower_bound(prime.begin(), prime.end(), K) - prime.begin();
	N = upper_bound(prime.begin(), prime.end(), N) - prime.begin();
	int r = K;
	set<int> s;
	pair<int, int> ans(-1, 0);
	rep2 (i, K, N + 1) {
		while (r <= N && !s.count(h[r])) {
			s.insert(h[r]);
			r++;
		}
		ans = max(ans, make_pair((int)s.size(), prime[i]));
		s.erase(h[i]);
	}
	cout << ans.second << endl;
	return 0;
}
            
            
            
        