zoukankan      html  css  js  c++  java
  • 一个关于数字累积的问题

    题目描述:
    小明有一个新奇的想法,就是有个非负整数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/基数的位权次幂  取整后对基数取余。

  • 相关阅读:
    CRC在线计算器
    freemodbus-v1.5.0 源码分析
    图及其实现
    最短路径
    交换排序-------快速排序
    FreeRTOS--删除任务
    Install OE and BitBake
    高端编程之DOM
    timeout使用实例
    使用JS提交表单
  • 原文地址:https://www.cnblogs.com/smartyman/p/9372047.html
Copyright © 2011-2022 走看看