C. Anton and Fairy Tale

链接

[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;
}
上一篇:iOS_UIImage_裁切圆形头像


下一篇:我的一个PLSQL【我】 循环嵌套、游标使用、变量定义、查询插入表、批量提交事务、字符串截取、动态sql拼接执行