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