Fork me on GitHub

一个关于数字累积的问题

题目描述:
小明有一个新奇的想法,就是有个非负整数n,不停地将各个位上的数字相加,一直加到只剩一个一位的整数。例如:给出n=37。相加的过程如下:3 + 7 = 10   1 + 0 = 1。因为1只剩下一个数字,所以返回1。
 
输入:
--非负整数n
 
输出:
--返回相加得到的一位整数
 
举例:
--输入:38  输出:2
<?php

function calc($n){
   $len = strlen($n);
   $num = 0;
   
   for($i=$len; $i >0 ;$i--){
       $num += intval($n/pow(10,$i-1))%10;
   }
   
   if($num >= 10){
      return  calc($num);
   }
   return $num;
}
$n =  12345;

$num = calc($n);

echo $num;

举例:如123 如何快速获取1   2   3

php版

获取3:123%10

获取2:intval(123/10)%10

获取1:intval(123/10/10)%10

总结:快速获取一个数字(x)各个位上的数值,可以用 x/基数的位权次幂  取整后对基数取余。

posted @ 2018-07-26 15:28  我曾如此奢望  阅读(159)  评论(0编辑  收藏  举报