假设x = 5,x = 17且x = 91
然后,
5 + 6 = 11 // Carry at 10s place
17 + 18 = 35 // Carry at 10s place
91 + 92 = 183 // Carry at 100s place
如何添加x + 1时,如何检查x是否会产生任意数字的进位。
答案 0 :(得分:1)
这是您想要的解决方案
<?php
function check($number){
$number = $number*2+1;
return pow(10,strlen($number)-1);
}
$carry = check(995);// Change here x=5,x = 17 and x = 91
if($carry > 1){
echo "Carry at $carry's place";
}else{
echo "No carry forward";
}
?>
答案 1 :(得分:0)
它非常草率但您可以浏览每个数字的每个数字并添加它们。如果任何一对大于10,你就知道它会有一个进位。
答案 2 :(得分:0)
您是否需要所有有携带或最高发生位置的地方?如果它只是最高的那个,我建议从顶部开始并加下来。所以,例如:
181 + 172 = 353&lt; 1000(不开心); 81 + 72 = 153&gt; 100(CARRY),停止。
它有点野蛮,但不如你必须将所有个别数字加在一起那么多。这甚至变得更容易,因为PHP并不关心类型,所以你可以使用字符串方法然后使用数学函数。
编辑 PHP伪:
given x and y
while (x%10 != x && y%10 != y)
{
pow10 = power(10, max(strlen(x), strlen(y))-1)
if(x+y > pow10)
print("POWER AT pow10 SPOT")
x = x%10, y = y%10
}
注意:这仅适用于x和y长度相同的情况。如果有必要的话,我会让你知道那部分。