【问题标题】:check whether infinitely long binary number is divisible by 3 or not检查无限长二进制数是否能被3整除
【发布时间】:2015-08-19 17:57:26
【问题描述】:

一个无限长的0和1的流即将到来,你必须找出到目前为止形成的数字是否可以被3整除。

我通过找到二进制数的十进制等价物然后将所有数字相加并确定该总和是否可被 3 整除来尝试它。但我知道这是错误的方法,因为数字是无限长的,所以一段时间后数字会超出范围。那么解决这个问题的方法是什么。

另一种方法是找出偶数位置设置位和奇数位置设置位,如果奇数和偶数位置的设置位总数之差可被 3 整除,则数字将可被 3 整除。 但这里的总和时间数也会超出范围。

有没有更好的方法?

【问题讨论】:

标签: binary division


【解决方案1】:

只需跟踪 x = 当前数字 mod 3。

如果 b 是下一位,则更新:

x = (2*x + b) % 3

x = 0当前数能被3整除

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-25
    • 1970-01-01
    • 2011-01-06
    • 1970-01-01
    • 1970-01-01
    • 2010-10-25
    • 1970-01-01
    相关资源
    最近更新 更多