题解: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;
}
    
posted @ 2025-11-15 11:14  linruicong  阅读(4)  评论(0)    收藏  举报