为啥提前输出-1会wa五个点,没道理的啊,我感觉这个特判没问题啊,为啥会wa,求wa数据 wa代码
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=2e5+6;
ll n,m,x,a[N];
ll ans=4e18;
void solve()
{
cin>>n>>m;
ll x=n*n;
if(m>x)
{
cout<<-1<<endl;return;
}
if(m<=n)
{
cout<<m<<endl;return;
}
for(ll i=1;i<=n;++i)
{
ll y=((m+i-1)/i)*i;
if(y>=m&&((m+i-1)/i)<=n)
{
ans=min(ans,y);
}
if((m-i+1)/i<i) break;
}
if(ans!=4e18) cout<<ans<<endl;
else cout<<-1<<endl;
}
int main()
{
int t=1;
//cin>>t;
while(t--)
solve();
return 0;
}
ac代码
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=2e5+6;
ll n,m,x,a[N];
ll ans=4e18;
void solve()
{
cin>>n>>m;
//ll x=n*n;
//if(m>x)
//{
// puts("-1");return;
//}
if(m<=n)
{
cout<<m<<endl;return;
}
for(ll i=1;i<=n;++i)
{
ll y=((m+i-1)/i)*i;
if(y>=m&&((m+i-1)/i)<=n)
{
ans=min(ans,y);
}
if((m-i+1)/i<i) break;
}
if(ans!=4e18) cout<<ans<<endl;
else cout<<-1<<endl;
}
int main()
{
int t=1;
//cin>>t;
while(t--)
solve();
return 0;
}