Stairs

https://codeforces.com/problemset/problem/1419/B

//题意:n阶楼梯,第i列有i个方块。求x个方块能建造多少个楼梯。
//思路:一个nice楼梯是一个nice正方形加上两个它前面的东西制造的,所以只要不停的放正方形,阶数就是1,3,7,15,方块数为i*(i+1)/2;

#include<iostream>
using namespace std;
typedef long long ll;
int main()
{
    int t;
    cin>>t;
    while(t--)
    {
        ll x;
        cin>>x;
        //ll tmp=x;
        ll cnt=0;
        for(ll i=1;i*(i+1)/2<=x;i=i*2+1)//枚举nice楼梯阶数
        {
            x-=i*(i+1)/2;//需要的方块数为到i为止的累加公式
            cnt++;
        }
        cout<<cnt<<endl;
    }
    return 0;
}

 

posted @ 2021-04-16 18:30  BlackSnow  阅读(162)  评论(0)    收藏  举报