二进制String被5整除 - Java

 

[0,1,1] => [0, 1, 3] => [T, F, F]

 

二进制累加 val = val * 2 + A[i] ,但数太大会溢出,所以每次进位以后%5,取余。判断剩下的部分进位能否mod 5就好啦。

[0,1,1,1,1,1,1] => [0, 1, 3, 7, 15...]

到7时mod5 => 2, 下次val = 2 * 2 + 1 = 5,而不是7 * 2 + 1 = 15

public static List<Boolean> prefixesDivBy5(int[] A) {
        ArrayList<Boolean> list = new ArrayList<>();
        int val =0 ;
        for (int i = 0; i < A.length; i++) {
            val = (val * 2 + A[i]) % 5;
            list.add(val == 0);
        }
        return list;
    }

 

posted @ 2019-03-31 12:15  森淼clover  阅读(141)  评论(0编辑  收藏  举报