寝癖頭の解法

学習中の覚え書きを投稿、更新していきます。

Aizu Online Judge in C++ #Volume4-0406 Power of Two

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