私は処方箋の問題を解決するためにPHPのGMPライブラリを使用しています。GMP整数を2の累乗(2n)の和に変換する
public function gmp_sum($aRessource)
{
// Avec le while
$i = 0;
$nb_ressource = count($aRessource);
while ($i < $nb_ressource)
{
if ($i == 0)
{
$tmp = gmp_init($aRessource[$i]);
}
else
{
$tmp = gmp_add(gmp_init($aRessource[$i]),$tmp);
}
$i++;
}
return $tmp;
}
変数$ aRessourceは次のものと同じです。array(1,2,4,8);ので、私の関数gmp_sum 15.私は逆の操作を行うアルゴリズムを作成したい
を返して
、関数は整数15を取ると私の2 4 8 1を含む配列を返します。しかし、私はしないでくださいどこから始めるべきかを知るヘルプ
ソリューションのための
ありがとう:PHPで2
public function gmp_reverse($gmp_sum)
{
$res = array();
$i = 1;
while ($i < 64) // 64 bytes
{
$tmp = $gmp_sum & $i; // check if bytes equal to 1
if ($tmp != 0)
{
array_push($res,$i);
}
$i = $i * 2;
}
return $res;
}
15を1に分割する方法2 4 8 ??私は出力を説明することができます –
@rahulpatel正直に私は自分自身を知っていませんが、私の関数の逆です –
整数の2の和の整数に分解するソリューションを編集しました –