• ベストアンサー

犯人探し

こんにちは、いつもお世話になっています。 今、2の階乗の数値があるとします。 --------------------------------- 2^0 = 1 2^1 = 2 2^2 = 4 2^3 = 8 2^4 = 16 2^5 = 32 2^6 = 64 2^7 = 128 2^8 = 256 ------------------------- たとえば犯人82がいて、 これはどの合計か知りたいと考えております。 答えは[2^1]と[2^4]と[2^6]の合計なので、 [1, 4, 6]となります。 これをプログラムで書きたいのですが どのようにすればいいでしょうか? $answer = *****(関数名)(82); ※$answerは配列型です。 宜しくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • fuji1
  • ベストアンサー率29% (109/371)
回答No.1

こんにちは。 簡単な回答ですが。。 大きい数字で引けるものを引いていって、対応する数字を配列で渡せばいいんじゃないですか?

toopeaan
質問者

お礼

はっ!! 気づきませんでした・・・ ありがとうございました!!

その他の回答 (1)

noname#18290
noname#18290
回答No.2

bit演算子を理解すると簡単です。  function bit_check($n) {   $i = 0;   $retval = array();   while($n > 0) {    if ($n & 1) {     $retval[] = $i;    }    ++$i;    $n = $n >> 1;   }   return $retval;  }  print_r(bit_check(82));

関連するQ&A