DIgital Root 的推导

Posted linmiaojia

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DIgital Root 的推导相关的知识,希望对你有一定的参考价值。

 

背景

在LeetCode上遇到这道题:Add Digits

题目很简单,但是如果要用 O(1) 时间复杂度,不要涉及循环或递归来解答的话,我就不知道如何下手了。

于是我找了一下别人的解法,发现涉及到一个 Digital Root 的原理(由于维基百科打不开,所以我觉得有必要记录一下我搜集到的信息和理解)。

Digital Root

我是从这个网站上看到它的推导过程,但是为了防止以后这些引用的网站不存在或者访问不了,还是得自立更生写一下。

首先,A ≡ B mod C, ≡ 这个符号, 表示 A 和 B mod C 得到的结果一样。(即 同余)

由于一个数的 digital sum 等于它所有位上的数加起来,即:

技术图片

因为 101i≡ mod ),所以:

技术图片

推论出:一个数与它 各个位数和 的模9 同余。

从这个推论我们可以推导出:

f(f(x)≡ f(x≡ (mod 9) (x=0 或 9 的情况除外)

 为了同时兼顾 x=0 和 x=9 的情况,最后推导出来的公式是:

digital root = 1+ ((x-1) mod 9) (ps: 在计算机计算中,负数的模百家争鸣,所以最好把 0 的计算独立出来,免得为了 -1 % 9 伤脑筋)

结论

1. digital root = 1+ ((x-1) mod 9)

2. 模运算真的能简化大数,好好利用可以省很多事。有空好好研究一下它的其他简化大数的功能。

 

以上是关于DIgital Root 的推导的主要内容,如果未能解决你的问题,请参考以下文章

Digital root

sgu 118 Digital Root

Project Euler 80: Square root digital expansion

digital filter design from analog filter

Project Euler 80: Square root digital expansion

如何证明一个数的数根(digital root)就是它对9的余数?