用二进制数13检查可分性

时间:2013-09-28 17:12:14

标签: c++ binary bit-shift bits bitset

如果用户输入从最重要到最不重要的数字,如何检查二进制数是否可分13?

位数可能非常大,因此无法将其转换为十进制,然后检查其可分性。

我以传统的方式接近它。 位的nuber范围可达10 ^ 5,因此在将其转换为十进制时会产生溢出。

如何处理这个问题? 例如:

110010000100100 它是13乘以

111111111111111 它不能被13整除。

1 个答案:

答案 0 :(得分:3)

这是一个O(N)算法:

从左到右遍历位。每个附加位置相当于将当前值乘以2,然后加0或1.在模13算术中也是如此。当你到达最后一位时,看看最终值是否等于0.如果是,那么原始数字可以被13整除。