結果
| 問題 |
No.6 使いものにならないハッシュ
|
| コンテスト | |
| ユーザー |
t_mk
|
| 提出日時 | 2022-03-17 11:43:03 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 8 ms / 5,000 ms |
| コード長 | 1,071 bytes |
| コンパイル時間 | 1,590 ms |
| コンパイル使用メモリ | 177,728 KB |
| 実行使用メモリ | 6,820 KB |
| 最終ジャッジ日時 | 2024-10-01 07:20:02 |
| 合計ジャッジ時間 | 2,708 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 32 |
ソースコード
#include <bits/stdc++.h>
using namespace std;
#define rep(i,n) for(int i = 0;i < (n);i++)
using ll = long long;
using P =pair<int,int>;
ll INF = 1LL << 60;
int ans[210000];
vector<int> isprime(210000,1);
int dfs(int p){
if(ans[p] != 0)return ans[p];
if(p < 10)return ans[p] = p;
int s = p;
int sum = 0;
while(s > 0){
sum += (s % 10);
s /= 10;
}
return ans[p] = dfs(sum);
}
int main(){
int k,n;
cin >> k >> n;
isprime[1] = 0;
for(int i = 2;i <= n;i++){
if(isprime[i] == 0)continue;
for(int j = 2*i; j <= n;j+=i){
isprime[j] = 0;
}
}
vector<P> hash;
for(int i = k;i <= n;i++){
if(isprime[i]){
hash.push_back(P(dfs(i),i));
}
}
int res = 0;
int ans2 = 0;
for(int i = 0;i < hash.size();i++){
set<int> st;
int cnt = i;
while(cnt < hash.size()){
st.insert(hash[cnt].first);
if(st.size() != (cnt - i + 1)){
cnt --;break;
}
cnt++;
}
cnt = st.size();
if(res <= cnt){
res = cnt;
ans2 = hash[i].second;
}
}
cout << ans2 << endl;
}
t_mk