题解:P12235 [蓝桥杯 2023 国 Java A] 躲炮弹
提供一个暴力的做法。
题目分析
我们可以直接枚举答案,然后检验枚举出来的答案是否符合条件。
该如何检验答案是否符合条件
很明显,我们直接枚举答案的因数。假如该因数在题目给定 \(l\) 和 \(r\) 区间范围内,证明不符合条件,直接跳过。
假若找到了答案,直接输出,终止程序。
AC 代码
#include<bits/stdc++.h>
using namespace std;
int n,l,r;
bool check(int x)//判断是否合法
{
if(x==1) return true;
for(int i=1;i*i<=x;++i)
{
if(x%i==0)
{
if(i>=l&&i<=r)return false;
int t=x/i;
if(t>=l&&t<=r)return false;
}
}
return true;
}
signed main()
{
cin>>n>>l>>r;
if(check(n))
{
putchar('0');
return 0;
}
for(int i=1;;++i)//枚举答案
{
bool left=false;
if(n-i>=0) left=check(n-i);
bool right=check(n+i);
if(left||right)
{
cout<<i;
return 0;
}
}
return 0;
}

浙公网安备 33010602011771号