#include <bits/stdc++.h>
using namespace std;
int main()
{
double n,m;
int ans;
ios::sync_with_stdio(false);
cin.tie(0);
while(cin>>n>>m){
if(n>m){
cout<<1<<"\n";
}
else if(n==m){
cout<<2<<"\n";
}
else{
ans=(((1-2*n)+sqrt((2*n-1)*(2*n-1)+8*m))/2);
cout<<ans+1<<"\n";
}
}
return 0;
}
一點點數學。
既然你知道(2n+(ans-1))*ans/2>m (等差級數和公式,d=1)
那麼稍微移向可以得到(ans)^2+(2n-1)*(ans)-2m>0
之後就是一元二次不等式,取最大的解+1 (因為要超過m,不能等於)