zoukankan      html  css  js  c++  java
  • k进制正整数的对k-1取余与按位取余

    华电北风吹
    天津大学认知计算与应用重点实验室
    日期:2015/8/24

    先说一下结论

    k进制数abcd,有abcd%(k1)=(a+b+c+d)%(k1)
    这是由于kn=((k1)+1)n=ni=0Cin(k1)i 因此kn 对(k-1)取余的话为1

    比如10进制1425%9=3,(1+4+2+5)=12%9=3.

    这个性质眼下我在两个地方见到了
    (一)算法导论第11章讲散列表的时候,除法散列的时候
    h(k)=kmod m
    对于m的选取,若m取2p或者2p1 均是不合适的选择,前者是由于有低p位决定散列函数值。后者是由于仅仅于大于p位出现的数字有关,而于顺序无关。
    (二)Leetcode刷题
    Leetcode258题
    Given a non-negative integer num, repeatedly add all its digits until the result has only one digit.
    For example:
    Given num = 38, the process is like: 3 + 8 = 11, 1 + 1 = 2. Since 2 has only one digit, return it.
    这个的思路是循环利用前面说过的结论
    所以对于给的非负整数,仅仅须要对9取余就可以,须要考虑整除的时候返回9,而仅仅当输入是0的时候返回0

    https://en.wikipedia.org/wiki/Digital_root
    https://leetcode.com/problems/add-digits/

  • 相关阅读:
    Monad Maybe
    Linq怎么支持Monad
    创建我们第一个Monad
    Monad的重点
    解析器组合子
    NFA
    全排列算法
    R语言将数据框转成xts
    R语言的字符串处理
    wpf mvvm MenuItem的Command事件
  • 原文地址:https://www.cnblogs.com/gavanwanggw/p/7211052.html
Copyright © 2011-2022 走看看