Aizu Online Judge(AOJ)の過去問から、その提出コードの解答例です。
・問題「2の累乗」
与えられた数を、それ以下の数の中で最大の2の累乗に変換してください。
たとえば、2や3ならば2^1=2に変換してください。
同様に4,5,6,7ならば2^2=4に、
8 ,9,1011,...,15ならば2^3=8に変換してください。
与えられた数を、その数以下の数の中で最大の2の累乗に変換するプログラムを作成せよ。
・入力される値
入力は以下の形式で与えられる。
N
1行に数N (2≤N≤10^6)が与えられる。
・期待する出力
変換した数を1行に出力する。
僕が作成、提出したコードは、以下のとおりです。
/* Volume4-0406 Power of Two http://judge.u-aizu.ac.jp/ 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; int main(void){ int n,ans=0; cin>>n; int i=1; while(i*2<=n){ i*=2; ans=i; } cout<<ans<<endl; return 0; }
設問の出典は、プログラミング問題のオンライン採点システム「Aizu Online Judge(AOJ)」です。
http://judge.u-aizu.ac.jp/onlinejudge/
Volume4-0406 Power of Two