如何在每次输入数字时检查由连续用户输入提供的二进制数是否可被5整除?

use*_*691 1 c binary

用户可以输入0或1,它将附加到起始编号为0.

每次用户添加一个数字时,程序应该判断整个数字是否可以被5整除.

例:

  1. 第一个数字是0.
  2. 用户输入'1' - 完整号码为'1' - 答案为否.
  3. 用户输入'0' - 完整号码是'10' - 答案是否定的.
  4. 用户输入"1" - 完整号码为"101" - 答案是肯定的.

我知道答案与最后一个余数有关,并保留最后的余数,但我找不到精确的计算或逻辑或数学来做到这一点.

ted*_*ted 5

在伪代码中:

remainder=0
while true {
    remainder = remainder % 5
    if remainder = 0
        print "divisbile"
    else
        print "nondivisible"

    remainder = (remainder<<1) + inputBit
}
Run Code Online (Sandbox Code Playgroud)

说明:如果一个数字可以被5整除,那么该数字的倍数也可以被5整除,因此该部分没有意义.由于您的扩展可以建模为乘以2和加法,因此可以将其应用于您的问题.现在你要做的就是将剩余部分相乘并添加输入并检查它是否可以分解.

  • 这是有效的,因为任何数字x都可以表示为`x = 5k + r`(其中`k`是一个整数,`r`是余数.通过在`x`的末尾添加一个`i`,它给出:` x'= 2(5k + r)+ i`,可以表示为:`x'= 10k +(2r + i)`所以确定是否'x'的前置词可被5整除,简化为确定`( 2r + i)`可以被5整除.我们从等式中删除10k,并且总是知道如果我们的数字超过5,我们可以把它写成`5k + r`并放下k. (2认同)