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

hamayanhamayan's blog

2の累乗 [パソコン甲子園2019 予選 C]

https://onlinejudge.u-aizu.ac.jp/challenges/sources/PCK/Prelim/0406

解説

https://onlinejudge.u-aizu.ac.jp/status/users/hamayanhamayan/submissions/1/0406/judge/3897175/C++14

2の累乗を順番に見ていって、N以下で最大の数を答える。
whileを使いながら累乗していくといい。
条件が破れたときにループを抜けるので、最後に割る2をして、戻してやると答え。

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

    int ans = 1;
    while (ans <= N) ans *= 2;
    ans /= 2;

    cout << ans << endl;
}