算法如下。如果A和B是2个整数(只有整数) 乘以,我们反复将A乘以2并将B除以2,直到B. 不能进一步分割,直到它的值变为0(记住, 这是整数除法)。在每个步骤中,每当B是奇数时, 我们将相应的A值添加到我们正在生成的产品中。在里面 结束,具有相应奇数B值的A值之和为 产品。得到它?
以下是一个例子:
如果要乘的两个整数是34和19,则操作将是:
A B Comment
34 19 add A to the product, B is odd
68 9 add A to the product, B is odd
136 4 ignore this A value, B is even
272 2 ignore this A value, B is even
544 1 add A to the product, B is odd
总结所有具有奇数B值的A值,得到:
34 + 68 + 544 = 646 =>最终产品
答案 0 :(得分:0)
正如你的算法所说的那样。
$a = 34;
$b = 19;
$total = 0;
do{
$mod = $b % 2;
if($mod){
$total = $total + $a;
}
echo $mod." - ".$a." - ".$total . "<br/>"; //Steps
$a = $a * 2;
$b = floor($b/2);
}while($b > 0);
echo $total; // 646
<强>步骤:强>
Mod $a $total
---------------------------
1 - 34 - 34
1 - 68 - 102
0 - 136 - 102
0 - 272 - 102
1 - 544 - 646