首页 > 其他 > 详细

一个关于数字累积的问题

时间:2018-07-26 15:44:43      阅读:127      评论:0      收藏:0      [点我收藏+]
题目描述:
小明有一个新奇的想法,就是有个非负整数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/基数的位权次幂  取整后对基数取余。

一个关于数字累积的问题

原文:https://www.cnblogs.com/yaoyao1556/p/9372047.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!