如何使用carry获得两个字符串数的求和?
例如:
$a='134526897556';
$b='251452365655';
我需要这个ans而不使用常规添加($ a + $ b)。我需要这个像第一个(6 + 5)= 11携带1秒(5 + 5)= 10携带它将是11然后携带1 ..连续。
答案 0 :(得分:1)
我希望你在寻找这个。尝试使用以下代码从反向中提取单个字符并求和,然后再反转并显示它。
$a='5465574541345268975564654';
$b='2514523656557987';
echo "Normal sum : ".($a +$b);
echo "<br>";
$main_loop = strlen($a);
if(strlen($a) < strlen($b)){
$main_loop = strlen($b);
$a = str_pad($a,strlen($b),"0",STR_PAD_LEFT);
}
else
{
$b = str_pad($b,strlen($a),"0",STR_PAD_LEFT);
}
$carry = 0;
$str = "";
$new_sum = "";
for($i = $main_loop-1;$i>=0;$i--)
{
$char_a = isset($a[$i])?$a[$i]:0;
$char_b = isset($b[$i])?$b[$i]:0;
$sum_char =(string)($char_a + $char_b + $carry);
$carry = 0;
$str = (string)$sum_char[0];
if(strlen($sum_char) > 1)
{
$carry = $sum_char[0];
$str = $sum_char[1];
}
$new_sum .= $str;
}
$new_sum = strrev($new_sum);
echo $new_sum;
答案 1 :(得分:0)
这是直接的数学;
添加两个变量:
$a + $b;