二进制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; }