はまやんはまやんはまやん

hamayanhamayan's blog

OOllOll [RUPC2018 Day2 B]

解法

https://onlinejudge.u-aizu.ac.jp/beta/review.html#RitsCamp18Day2/2751392

1が多いほど答えに近いと言える。
そのため、全て1の数の中からN以下の最大数が答えになる。
全て1の数は全てで30個くらいしか無いので、全探索して答え。

int N;
//---------------------------------------------------------------------------------------------------
void _main() {
    cin >> N;

    int ans = 1;
    int x = 1, y = 1;
    rep(i, 0, 30) {
        x = x * 2 + 1; y++;
        if (x <= N) ans = y;
    }
    cout << ans << endl;
}