参天大树(站外提)求解
  • 板块题目总版
  • 楼主AC721
  • 当前回复17
  • 已保存回复17
  • 发布时间2025/1/24 19:37
  • 上次更新2025/1/24 22:31:18
查看原帖
参天大树(站外提)求解
1277231
AC721楼主2025/1/24 19:37

参天大树

最新提交:
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 ≤ 10910^ 9 RE了(开10910^9会MLE,开10810^8会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;
}
2025/1/24 19:37
加载中...