【ループメニュー2】> 【約数の列挙】STEP: 5 10 進数から 2 進数に変換 (paizaランク D 相当) [難易度: 1272 ±27]
※リンク先へ移動するためには[paiza]へのログインが必要です。
10 進数で表された整数 N が与えられます。
N を 2 進数に変換して出力してください。
入力値(例)
4
出力値(例)
100
解答例
1 2 3 4 5 6 7 8 9 10 11 12 |
<?php $n = trim(fgets(STDIN)); while(0 < $n) { $binary[] = $n % 2; $n = floor($n / 2); } $re_binary = array_reverse($binary); foreach($re_binary as $value) { echo $value; } ?> |
解説
整数の10進数を2進数に変換するには、変換したい10進数を商が0になるまで2で割り続け商と余りを求めます。
60の場合 → 111100
60÷2=30...0
30÷2=15...0
15÷2=7...1
7÷2=3...1
3÷2=1...1
これで、001111(最後の1は3÷2=1の1)が得られます。ただ、このままだと逆なので配列に格納してarray_reverse()で順番を逆にして、foreach()で一つずつ値を取り出します。