結果
| 問題 |
No.6 使いものにならないハッシュ
|
| コンテスト | |
| ユーザー |
chakku
|
| 提出日時 | 2016-04-14 00:56:44 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
RE
|
| 実行時間 | - |
| コード長 | 1,433 bytes |
| コンパイル時間 | 639 ms |
| コンパイル使用メモリ | 72,200 KB |
| 実行使用メモリ | 6,820 KB |
| 最終ジャッジ日時 | 2024-10-04 08:10:14 |
| 合計ジャッジ時間 | 5,012 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 3 RE * 29 |
ソースコード
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <set>
#include <map>
#include <queue>
#include <climits>
#include <cassert>
using namespace std;
#define REP(i,n) for(int i=0;i<n;i++)
#define INF INT_MAX/3
#define LINF LLONG_MAX/3
#define MP make_pair
#define PB push_back
#define ALL(v) (v).begin(),(v).end()
typedef long long ll;
typedef pair<int,int> pii;
typedef vector<int> vi;
typedef vector<vi> vvi;
int N,K;
bool sosu[200001];
int f(int n){
if(n<10) return n;
int s = 0;
while(n>0){
s += n%10;
n /= 10;
}
return f(s);
}
int main(){
cin >> K >> N;
for(int i=2;i<=N;i++) sosu[i]=true;
for(int i=2;i*i<=N;i++){
if(!sosu[i]) continue;
for(int j=i*2;j<=N;j+=i){
sosu[j] = false;
}
}
vector<int> s;
for(int i=K;i<=N;i++) if(sosu[i]) s.push_back(i);
vector<int> cnt(s.size());
for(int i=0;i<s.size();i++) cnt[i] = f(s[i]);
vector<bool> use(10,false);
int ans = 0;
int len = 0;
int l=0,r=0;
for(r=0;r<s.size();r++){
if(use[cnt[r]]){
while(cnt[l]!=cnt[r]){
cnt[l]=false;
l++;
}
while(cnt[l]==cnt[r]){
l++;
}
}
if(len<=r-l+1){
ans = l;
len = r-l+1;
}
use[cnt[r]]=true;
}
cout << s[ans] << endl;
}
chakku