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; }