最新提交:
Compile Error 0 分
历史最高:
Runtime Error
30 分
时间限制: 1000ms
空间限制: 524288kB
题目描述:
丛林中矗立着一棵参天大树,高度为 y。
大树 2~p 高度处,每个位置都有一只蚱蜢。
一只蚱蜢如果在 x 高度处,那么它可以跳到 2x、3x、4x、...... 等任意一个 x 的倍数处。
你想在 2~y 高度范围内,找到一个尽可能高且不会有任何蚂蚱能跳到的位置。
注意你和蚂蚱的位置都必须是整数,如果你找不到任何一个合法的位置的话,就输出-1。
输入格式: 第一行包含两个正整数 p 和 y。
输出格式: 输出一行一个整数表示答案。
样例输入:
3 6
样例输出:
5
样例输入:
3 4
样例输出:
-1
数据规模:
2 ≤ p ≤ y ≤ 109 RE了(开109会MLE,开108会RE) 代码:
#include<bits/stdc++.h>
using namespace std;
const int L=1e9+5;
int p,y;
bool a[100000005];
void f(){
a[1]=1;
for(int i=2;i<=p;i++){
if(a[i])continue;
a[i]=true;
for(int j=2;;j++){
a[i*j]=true;
if(i*j>y){
break;
}
}
}
}
int main(){
cin>>p>>y;
f();
for(int i=y;i>=1;i--){
if(a[i]==false){
cout<<i;
return 0;
}
}
cout<<-1;
return 0;
}