結果
| 問題 |
No.371 ぼく悪いプライムじゃないよ
|
| コンテスト | |
| ユーザー |
togatoga
|
| 提出日時 | 2016-05-14 00:05:12 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 1,529 bytes |
| コンパイル時間 | 1,372 ms |
| コンパイル使用メモリ | 169,856 KB |
| 実行使用メモリ | 13,636 KB |
| 最終ジャッジ日時 | 2024-10-05 18:50:21 |
| 合計ジャッジ時間 | 4,833 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 20 TLE * 1 -- * 21 |
ソースコード
#include <bits/stdc++.h>
#define mp make_pair
#define mt make_tuple
#define pb push_back
#define rep(i,n) for(int i=0;i<(n);i++)
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int,int> pii;
typedef pair<long,long> pll;
const int INF=1<<29;
const double EPS=1e-9;
const int MOD = 100000007;
const int dx[]={1,0,-1,0},dy[]={0,-1,0,1};
const int MAX_N = 100002;
bool is_prime[MAX_N];
vector<int> primes;
void gen_prime(){
memset(is_prime, true, sizeof(is_prime));
is_prime[0] = false;
is_prime[1] = false;
for (int i = 2; i < MAX_N; i++){
if (not is_prime[i])continue;
primes.push_back(i);
for (int j = i + i; j < MAX_N; j += i){
is_prime[j] = false;
}
}
return ;
}
ll L,H;
unordered_set<ll> flag;
ll max_value;
void get_max_value(ll val, int index){
if (val > H)return ;
if (flag.size() > 0 and L <= val and val <= H){
// cout << val << endl;
max_value = max(max_value, val);
}
flag.insert(val);
for (int i = index; i < primes.size(); i++){
if (val * primes[i] <= H){
if (flag.count(val * primes[i]) > 0)continue;
get_max_value(val * primes[i], index);
}
}
}
ll result;
int main(){
cin >> L >>H;
gen_prime();
result = 0;
sort(primes.begin(), primes.end());
for (int i = primes.size() - 1; i >=0; i--){
flag.clear();
max_value = 0;
get_max_value(primes[i], i);
if (max_value != 0){
break;
}
}
cout << max_value << endl;
}
togatoga