「1を数えよ」を解くために:part3 Haskell(Beta)編(paizaランク C 相当)
問題にチャレンジして、ユーザー同士で解答を教え合ったり、コードを公開してみよう!
問題
下記の問題をプログラミングしてみよう!
「1を数えよ」では、整数 N が 10 進数表記で与えられます。
問題文にしたがって N を 2 進数に変換し、1 の個数を数えてみましょう。
なお、この問題は元の「1を数えよ」と同じ問題です。
与えられた 10 進数の整数 N を 2 進数に変換したときの 1 の個数を答えて下さい。
整数の 10 進数を 2 進数に変換するには、変換したい 10 進数を商が 0 になるまで 2 で割り続け求めた余りの部分を逆順に並べます。
例えば、10 進数の 11 を 2 進数に変換するときは以下のように処理します。
・11 を 2 で割ると商が 5、余りが 1 。
・5 を 2 で割ると商が 2、余りが 1 。
・2 を 2 で割ると商が 1、余りが 0 。
・1 を 2 で割ると商が 0、余りが 1 。商が 0 になったので処理を終了する。
この処理で求めた余りの部分を逆順に並べた 1011 が 10 進数の 11 を 2 進数に変換したものです。
- 入力される値
-
入力は以下のフォーマットで与えられます。
N
・1 行目に 10 進数の整数 N が与えられます。
・入力は合計で 1 行となり、末尾に改行が 1 つ入ります。
入力値最終行の末尾に改行が1つ入ります。
文字列は標準入力から渡されます。
標準入力からの値取得方法はこちらをご確認ください
- 期待する出力
整数 N を 2 進数にしたときの 1 の個数を 1 行に出力してください。
出力の末尾に改行を入れ、余計な文字、空行を含んではいけません。
- 条件
-
すべてのテストケースにおいて、以下の条件をみたします。
・入力はすべて整数
・ 0 ≦ N ≦ 65535
問題一覧へ戻る