0
点赞
收藏
分享

微信扫一扫

中石油 问题 D: log (数学)


链接

题意:

说透彻点就是 让你计算\((n+1)\)最大是(1+2+3+...x)这个x

分析:

我是直接O(1)的,我们直接用等差数列前n项和



\[x*(x+1)/2<=(n+1) \]


然后直接转化,x(x+1)<=2(n+1),然后我们 xx<=2(n+1),求出x,然后往下找符合条件的x即可

ll n;
void solve(){
scanf("%lld",&n);
if(n==1||n==2){
cout<<1<<endl;
return ;
}
ll sum=sqrt((n+1)*2);
while(sum*(sum+1)>2*(n+1)) sum--;
cout<<n-sum+1<<endl;
}

举报

相关推荐

0 条评论