题解:
刚开始我是直接枚举所有的二进制前缀,转换成十进制数来判断是否能被5整除,但是可能是因为精度,有的点过不了,我就看了别人的方法:
一个数能否被5整除,要看转换成十进制的个位数,如果是0或者是5,就可以被5整除 。
代码:
class Solution {
public:
vector<bool> prefixesDivBy5(vector<int>& A) {
vector <bool> res;
int currentRear = 0;// 当前十进制数的个位数
for(int i = 0; i < (int)A.size(); i++)
{
currentRear = (currentRear * 2 + A[i]) % 10;//( 前一个数左移一位(也就是乘2) + 个位数 ) % 10 ==》当前数的个位数
if(currentRear == 0 || currentRear == 5)
{
res.push_back(true);
}
else
{
res.push_back(false);
}
}
return res;
}
};