链接
[https://codeforces.com/contest/785/problem/C]
题意
初始时有n,第1天先加m开始吃1,但总的不能超过n,第i天先加m开始吃i(如果不够或刚好就吃完,结束了),
问能吃多少天
分析
这个样例,模拟该过程发现规律
如果n<=m,就是n天
否则发现第m+1天比m天剩余的少1,第m+2天比m+1天剩余少2.。。。
就直接二分搞了
代码
#include<bits/stdc++.h>
using namespace std;
#define ll long long
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
//freopen("in.txt","r",stdin);
ll n,m;
while(cin>>n>>m){
if(n<=m){
cout<<n<<endl; continue;
}
else{
n-=m;
ll l=0,r=2e9;
while(l<r){
ll mid=(l+r)/2;
if((mid+1)*mid/2>=n)
r=mid;
else l=mid+1;
}
cout<<m+l<<endl;
}
}
return 0;
}