检查x和x + 1数字之和是否生成任意数字的进位(PHP)

时间:2016-08-04 13:07:15

标签: php math

假设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是否会产生任意数字的进位。

3 个答案:

答案 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";
}
?>

点击此处:https://eval.in/617847

答案 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长度相同的情况。如果有必要的话,我会让你知道那部分。