中石油 问题 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;
}
posted @ 2021-07-29 23:48  `KingZhang`  阅读(67)  评论(0)    收藏  举报