如果用户输入从最重要到最不重要的数字,如何检查二进制数是否可分13?
位数可能非常大,因此无法将其转换为十进制,然后检查其可分性。
我以传统的方式接近它。 位的nuber范围可达10 ^ 5,因此在将其转换为十进制时会产生溢出。
如何处理这个问题? 例如:
110010000100100 它是13乘以
111111111111111 它不能被13整除。
答案 0 :(得分:3)
这是一个O(N)算法:
从左到右遍历位。每个附加位置相当于将当前值乘以2,然后加0或1.在模13算术中也是如此。当你到达最后一位时,看看最终值是否等于0.如果是,那么原始数字可以被13整除。